我正在使用具有2种视图类型的RecyclerView。我想分别处理单个类型的点击事件。我可以在适配器的onBindViewHolder方法中执行此操作。但是我的一种视图类型必须重新渲染活动,因为它会更改RecyclerView数据。
基本上,这是一个文件浏览器应用程序,一种视图类型用于“文件”,另一种视图类型用于“文件夹”。如果用户点击“文件夹”,我想用“文件夹路径”重新渲染RecyclerView。
我研究了这个问题,但是我感到迷失于RecyclerView的不同onItemClickListener实现和从适配器调用Activity方法的过程中,我觉得这很混乱。
ListView似乎凭借其简单的onItemClickListener方法适合我的情况,但并未作为RecyclerView进行优化。
最干净的方法是什么?
答案 0 :(得分:0)
我会给你一个例子,看起来像这样:
//The interface the activity implements
public interface DirectoryClickListener {
void onClick(Directory directory)
}
//The Activity
public class DirectoryActivity extends AppCompatActivity implements DirectoryClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter = new DirectoryAdapter(this);
}
@Override
public void onClick(Directory directory) {
//yourcode
}
}
//The adapter constructor
public DirectoryAdapter(DirectoryClickListener listener) {
this.listener = listener;
}
//OnBindViewHolder you call the onClick to send the directory to the activity where from there you get the files list and refresh the adapter data
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.itemView.setOnClickListener(view -> {
listener.onClick(getItem(position));
});
}