RecyclerView onItemClick-Listener
Wie die Umsetzung RecyclerView
onItemClick Zuhörer wie wir mit ListView, das ist mein Alter Adapter-Klasse mit 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);
.......
}
Und hier ist meine neue Adapter
Klasse mit 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;
}
}
InformationsquelleAutor Sun | 2015-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
ersten store ganze Ansicht in das viewHolder:
dann set klicken Sie auf listener an
onBindViewHolder
:ich denke, wenn Sie die Klick-listener zu der rootview Sie bekommen, was Sie wollen.
dies funktioniert aber nur, wenn ich Tippen Sie auf text, nicht irgendwo auf die Zeile
Ich weiß nicht genau, was dein problem ist, sah ich in Ihre anderen Beitrag, sorry im Moment kann ich nicht schaffen, alle Beispiel-Projekt zu testen, aber ich habe umgesetzt, was ich geschrieben genau in einem meiner app:-(
ich bin nicht auf der Suche für jede Probe Projekt, meine Sorge ist, warum klicken Sie nicht reagiert, wenn ich Tippen Sie auf die Zeile
InformationsquelleAutor mmlooloo
Zuerst müssen Sie, um Ihre eigenen OnItemTouchListener :
Werden und dann haben Sie zur Umsetzung der ClickListener, die aufgerufen wird, durch die RecyclerTouchListener oben :
InformationsquelleAutor mlumeau
Ich weiß, das ist ein wenig spät, aber für alle diejenigen, die Wandern und nicht verloren gehen. Ich fand diese elegante Lösung hier.
Also im Grunde erstellen Sie eine ItemClickSupport Klasse wie unten
Und dann in der activity/fragment, wo Sie definiert haben, und binden Sie Ihr recyclerView tun Sie einfach das folgende
Außerdem müssen Sie zum erstellen einer ids.xml Datei in die res/values-Ordner, und definieren Sie die folgenden innerhalb
Ich hoffe, das hilft. Trotzdem empfehlen Sie, um durch die Artikel Lesen Sie mehr über es.
InformationsquelleAutor Gaurav Sarma