RecyclerView onItemClick Auditeur
Comment mettre en œuvre RecyclerView
onItemClick auditeur comme nous le faisons avec ListView, c'est mon ancienne classe d'Adaptateur à l'aide de ListView
:
public class GenreAdapter extends BaseAdapter {
....
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
//convert view = design
View v = convertView;
if (v == null) {
holder = new ViewHolder();
v = vi.inflate(Resource, null);
holder.textTitle = (TextView) v.findViewById(R.id.textTitle);
v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}
holder.textTitle.setText(genreArrayList.get(position).getTitle());
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
bundle.putSerializable("data", genreArrayList);
bundle.putInt("current", position);
Intent intent = new Intent(context, MovieActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtras(bundle);
context.startActivity(intent);
}
});
return v;
}
static class ViewHolder {
public TextView textTitle;
}
MainFragment.java:-
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_main, container, false);
/* Initialize recycler view */
mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
list = new ArrayList<MainPoho>();
adapter = new MainAdapter(getActivity(), list);
mRecyclerView.setAdapter(adapter);
.......
}
Et voici ma nouvelle Adapter
classe à l'aide de RecyclerView
:
public class MyRecyclerAdapter extends RecyclerView.Adapter<FeedListRowHolder> {
private List<FeedItem> feedItemList;
private Context mContext;
public MyRecyclerAdapter(Context context, List<FeedItem> feedItemList) {
this.feedItemList = feedItemList;
this.mContext = context;
}
@Override
public FeedListRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, null);
FeedListRowHolder mh = new FeedListRowHolder(v);
return mh;
}
@Override
public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) {
FeedItem feedItem = feedItemList.get(i);
feedListRowHolder.title.setText(Html.fromHtml(feedItem.getTitle()));
}
@Override
public int getItemCount() {
if(feedItemList !=null){
return feedItemList.size();
} else {
return 0;
}
}
public class FeedListRowHolder extends RecyclerView.ViewHolder {
protected TextView title;
public FeedListRowHolder(View view) {
super(view);
this.title = (TextView) view.findViewById(R.id.title);
}
FeedItem.java:-
public class FeedItem {
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
OriginalL'auteur Sun | 2015-03-07
Vous devez vous connecter pour publier un commentaire.
premier magasin point de vue l'ensemble de votre viewHolder:
puis cliquez sur définir auditeur à
onBindViewHolder
:je pense que si vous définissez l'écouteur de clics à la rootview vous obtiendrez ce que vous voulez.
cela ne fonctionne que quand je le fais, appuyez sur le texte, pas n'importe où sur la ligne
Je ne sais pas exactement quel est ton problème, j'ai vu ton autre post, désolé, maintenant, je ne peut pas créer un exemple de projet de tester, mais j'ai mis ce que j'ai posté exactement dans l'un de mes app:-(
je ne suis pas à la recherche pour n'importe quel projet d'exemple, ma préoccupation est pourquoi cliquez sur ne pas répondre quand je le fais, appuyez sur la ligne
OriginalL'auteur mmlooloo
D'abord, vous devez mettre en place votre propre OnItemTouchListener :
Et ensuite, vous aurez à mettre en œuvre la ClickListener qui sera appelé par la RecyclerTouchListener ci-dessus :
OriginalL'auteur mlumeau
Je sais que je suis un peu en retard mais pour tous ceux qui s'égarent et ne sont pas perdus. J'ai trouvé cette solution élégante ici.
Donc, fondamentalement, vous créez un ItemClickSupport classe comme ci-dessous
Et puis dans votre activité/fragment où vous avez défini et de lier votre recyclerView juste faire ce qui suit
Aussi, vous devez créer un ids.xml fichier à l'intérieur de votre res/values dossier et définir les éléments suivants à l'intérieur de
J'espère que cette aide. Encore vous recommandons de passer par le l'article lire plus sur elle.
OriginalL'auteur Gaurav Sarma