2015-12-14 1 views
0

После изменения моего адаптера списка на адаптер recycleview выясняется, что lestin to OnItem клик никогда не был более сложным:/Я пробовал каждый отдельный метод, но все не работало, потому что я ничего не знаю о Context. Как начать новую деятельность по щелчку в классе адаптера:adapter.class и display.class будет что такое контекст?

new intent(context, Single.class) 

new intent(getActivity(), Single.class) 

new intent(getContext(), Single.class) 

new intent(getApplicationContext(), Single.class) 

new intent(getActivity().getApplicationContext(), Single.class) 


new intent(activity.this, Single.class) 

new intent(this, Single.class) 

new intent(activity.class, Single.class) 

Все вышеуказанные коды не могут быть решены, Я думаю, что я должен Somthing под названием создающего контекст? Пожалуйста, помогите мне, как это решить.

ответ

1

Передайте параметр контекста в конструкторе адаптера и сохранить его в качестве члена, как это:

public MyAdapter(Context context){ 
    this.mContext = context; 
} 

и на вашем клик слушателя, вызовите

new intent(this.mContext, Single.class) 

И когда вы создаете адаптер в ваша деятельность, например:

MyAdapter adapter = new MyAdapter(this); 
+0

Aha actulay Я попытался использовать контекст адаптера: listItem, но без этого. i wilI попробую это, когда придет сила – H4F

+0

На самом деле забыл сказать, что класс обратного вызова предназначен для реализации фрагментами или Activity. Затем вы можете создать свое намерение в таких объектах. –

+0

Я положил: this.Activity = активность, тогда использовалась деятельность как контекст, ее разрешение, но начальная активность (намерение); не является – H4F

0

Контекст встроенный класс в Android, смотрите here и Activity и ApplicationContext являются подклассом it.so вы можете использовать activity.this или getApplicationContext применять методы, которые нуждаются в Context параметр.

+0

Я попытался это, но также и не может быть решен – H4F

+0

@ H4F, вы назвали этот метод '' Activity' или Fragment'? – starkshang

+0

Ничего из этого в классе адаптера im с использованием recycleview – H4F

1

Если вы хотите узнать больше о различиях между каждый тип Контекста, я рекомендую вам this reading.

Что вам нужно сделать, так это создать класс обратного вызова, который будет передан через конструктор адаптера. В методе onBindViewHolder создайте прослушиватель кликов на любом нулевом View, а в методе onClick просто вызовите свой обратный вызов.

public class MyAdapter extends ... 

    private MyCallback mCallback; 

    public MyAdapter(..., MyCallback callback) { 
     mCallback = callback; 
     ... 
    } 


    @Override 
    public void onBindViewHolder(UniversityItemViewHolder holder, int position) { 
     holder.itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mCallback.onItemClicked(v, position); 
      } 
     }); 

    ... 
+0

Я пробовал это раньше, getPostion() работает в onBindViewHolder, но когда я приступаю к запуску, первая часть не может быть решена – H4F