写一个 名叫mainActivity的内部类 ,用simAdapter ,viewHolderListener 写一个有十个列表项的点击事件 不用position
时间: 2024-02-24 15:57:06 浏览: 66
好的,以下是一个简单的示例代码,实现了一个名为MainActivity的内部类,使用了一个名为SimAdapter的适配器,并实现了一个名为ViewHolderListener的接口,以实现十个列表项的点击事件,而不用使用position:
```
public class MainActivity {
private SimAdapter mAdapter;
private void setupRecyclerView() {
RecyclerView recyclerView = findViewById(R.id.recycler_view);
mAdapter = new SimAdapter(...);
mAdapter.setViewHolderListener(new ViewHolderListener() {
@Override
public void onItemClicked(View view, int adapterPosition) {
switch (view.getId()) {
case R.id.item_1:
// 处理第一个列表项的点击事件
break;
case R.id.item_2:
// 处理第二个列表项的点击事件
break;
// ...
case R.id.item_10:
// 处理第十个列表项的点击事件
break;
}
}
});
recyclerView.setAdapter(mAdapter);
}
private static class SimAdapter extends RecyclerView.Adapter<ViewHolder> {
private ViewHolderListener mListener;
public void setViewHolderListener(ViewHolderListener listener) {
mListener = listener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// 创建 ViewHolder
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// 绑定数据到 ViewHolder
View itemView = holder.itemView;
itemView.findViewById(R.id.item_1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mListener.onItemClicked(view, 0);
}
});
itemView.findViewById(R.id.item_2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mListener.onItemClicked(view, 1);
}
});
// ...
itemView.findViewById(R.id.item_10).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mListener.onItemClicked(view, 9);
}
});
}
@Override
public int getItemCount() {
// 返回列表项数量
return 10;
}
}
private interface ViewHolderListener {
void onItemClicked(View view, int adapterPosition);
}
private static class ViewHolder extends RecyclerView.ViewHolder {
// ViewHolder 的实现
}
}
```
在这个示例代码中,我们使用了一个名为SimAdapter的适配器,并在其中实现了ViewHolder类,用于管理每个列表项的视图。我们使用了ViewHolderListener接口,用于监听每个列表项的点击事件,而不使用position参数。在onBindViewHolder方法中,我们为每个列表项的视图添加了一个点击事件监听器,并在触发点击事件时,调用了ViewHolderListener接口的onItemClicked方法,向外部传递了列表项的位置信息。在MainActivity中,我们通过调用setViewHolderListener方法,设置了ViewHolderListener接口的实现,用于处理每个列表项的点击事件。
阅读全文