我有一个RecyclerView
,它是通过膨胀CardView
布局构建的。这是通过onCreateViewHolder
方法实现的。我将ArrayList
数据传递给RecyclerView
。
我的要求是,在点击列表项时,我必须加载一个新页面,显示所点击项目的详细信息。为此,我需要获取单击的项目的ID,该ID未在视图中显示。在视图中,我只有该项目的名称和电子邮件。
假设我传递的ArrayList的类型为Person
,Person包含成员变量id
,name
,email
,education
,{{ 1}}。
在location
RecyclerView
功能中,我只设置了onBindViewHolder
和name
。
我需要获取项目的id,然后只有我可以执行db命令并获取特定人员的详细信息。
email
我的要求是RecyclerView rv = (RecyclerView) rootView.findViewById(R.id.recyclerList);
rv.setAdapter(new NGOViewHolder(ArrayList()));
rv.addOnItemTouchListener( // and the click is handled
new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Intent intent = new Intent(getActivity(),NGODetails.class);
intent.putExtra("ID", (IDOfTheItemClicked));
}));
,即传递上述
IDOfTheItemClicked
应该是我最初传递的Intent(getActivity(),NGODetails.class);
intent.putExtra("ID", (IDOfTheItemClicked));
项目的ID。
如何在点击列表项时将ArrayList
当前显示在视图中的id
对象发送到下一个屏幕。
答案 0 :(得分:0)
如果您不更改适配器中项目的顺序,只需在onClick中调用yourArrayList.get(position).yourgetIDOfTheItemClickedMethod
。
答案 1 :(得分:0)
set position for each item using setTag inside onCreateViewHolder method after that when you'll click then inside onclick you get a view reference from there, get that tag and convert to int( this will give you position of view)
onCreateViewHolder(............){
View view;
view.setTag(id, position);
view.setOnTouch or Onclick(View v){
String position = v.getTag(),toString();
// get your id using this position
}
}