我试图允许用户单击我的任何RecyclerView项目,然后突出显示该项目,将其添加到数组列表中,然后将该列表用于改造后请求中。
我了解如何在Adapter类中实现onClick方法,但是我无法使用附加到该列表的列表,因为它是在我的适配器类中初始化的。如何在Activity类中实现此功能?
需要使用代码示例的详细说明。谢谢!
答案 0 :(得分:0)
如果我正确理解了您的问题,您可能想看看this免费使用复制粘贴类。它在Activity内设置了OnItemClickListener。使用此代码进行设置:
RecycerView recyclerView = findViewById(R.id.recyclerView);
ItemClickSupport.addTo(recyclerView).setOnItemClickListener(new ItemClickSupport.OnItemClickListener( {
@Override
public void onItemClicked(RecyclerView recyclerView, int position, View {
//Code goes here
}
});
我希望这是您想要的。
答案 1 :(得分:0)
我已经找到了解决自己问题的方法。代码如下。
我想获得被单击的联系人(每个列表视图项目的数据类型),以便能够处理活动类而不是适配器类中的数据。
我创建了一个如下界面
public interface ItemClickListener {
void onItemClick(Contact contact);
}
在我的RecyclerViewAdapter类中,我创建了以下构造函数和局部变量:
private static ItemClickListener onItemClick;
public RecyclerViewAdapter(List<Contact> contactList, int itemLayout, Context context) {
this.contactList = contactList;
this.itemLayout = itemLayout;
this.context = context;
}
然后在onBindViewHodler方法中,将setOnClickListener分配给列表项的根布局(在本例中为LinearLayout):
@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int position) {
final Contact contact = contactList.get(position);
viewHolder.contactName.setText(contact.getFullName());
viewHolder.contactImage.setBackgroundResource(R.drawable.human_photo);
viewHolder.viewLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClick.onItemClick(contactList.get(position));
}
});
}
现在,在Activity类中,创建一些全局变量,然后在onCreate方法中,设置RecyclerView:
private CreateGroupAccountStage2RVAdapter adapter;
private RecyclerView contactsRecyclerView;
private RecyclerView.LayoutManager contactsRecyclerViewLayoutManager;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_contacts);
//Set up recyclerview with dummy data
ArrayList<Contact> contactList = new ArrayList<>();
contactList.add(new Contact("FN1", "LN1", "12345"));
contactList.add(new Contact("FN2", "LN2", "23456"));
contactsRecyclerView = (RecyclerView) findViewById(R.id.contactsRV);
contactsRecyclerViewLayoutManager = new LinearLayoutManager(this);
contactsRecyclerView.setLayoutManager(contactsRecyclerViewLayoutManager);
adapter = new RecyclerViewAdapter(contactList, R.layout.contact_list_item, this);
contactsRecyclerView.setAdapter(adapter);
adapter.setOnClick(ThisActivity.this);
}
我希望这可以帮助陷入困境的其他人!