在回收器视图中单击其他位置时,更改另一个适配器位置中的内容



让我们假设我们有一个有 7 个条目的 RecyclerView。
当我单击第 5 个适配器位置的视图时,有没有办法更改第二个适配器位置的内容?

将您的条件(追逐内容(保留在 onBindViewHolder 和 OnClick 调用通知 DataSetChanged((;

是的,这是可能的。

您需要更新已传递给适配器的列表的值。请更新列表中的愿望位置值,并通知数据集生效。

在适配器内部数组的第 5 个位置(您正在传递给适配器(的更改并通知 DataSetChanged((

是的,首先您必须在单击第 5 个位置时更改数组的第 2 项内容,然后调用 adapter.notifyDataSetChanged((所以BindViewHolder将被调用

或调用通知项目已更改(1(;

是的,修改条目后可以使用notifyDataSetChanged()。请参阅以下示例适配器代码。

public class SampleListAdapter extends RecyclerView.Adapter<SampleListAdapter.ViewHolder>{
    private List<String> listData;
    private Context context;
    public SampleListAdapter(Context context){
        this.context = context;
        listData.add(0, "One");
        listData.add(1, "Two");
        listData.add(2, "Three");
        listData.add(3, "Four");
        listData.add(4, "Five");
        listData.add(5, "Six");
        listData.add(6, "Five");
    }
    public void swapList(List<String> listData) {
        this.listData = listData;
        notifyDataSetChanged();
    }
    class ViewHolder extends RecyclerView.ViewHolder {
        TextView tvDeliveryName;
        View view;
        ViewHolder(View itemView) {
            super(itemView);
            view = itemView;
            tvDeliveryName = itemView.findViewById(R.id.tv_course_name);
        }
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(context).inflate(R.layout.yout_layout, parent, false);
        return new ViewHolder(itemView);
    }
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        String data = listData.get(position);
        holder.tvDeliveryName.setText(data);
        holder.view.setTag(position);
        holder.view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int pos = (int) view.getTag();
                if(pos == 1){
                    listData.remove(1);
                    listData.add(1, "Your Data");
                    swapList(listData);
                }
            }
        });
    }
    @Override
    public int getItemCount() {
        return listData.size();
    }
}

相关内容

最新更新