如何通过改造在 recyclerview 上设置复选框值 (Android studio)

How to set Checkbox value on recyclerview with retrofit (Android studio)

如果状态值为 1,我想让复选框被选中, 我应该怎么办?你们能帮帮我吗?我是一个新手,很好奇如何让它发挥作用, 谢谢:)

这是我的适配器class:

public class AdapterInventaris extends RecyclerView.Adapter<AdapterInventaris.HolderData> {
private List<InventarisModel> mList ;
private Context ctx;
private CheckBox checkbox;

public AdapterInventaris (Context ctx, List<InventarisModel> mList)
{
    this.ctx = ctx;
    this.mList = mList;
}

@Override
public AdapterInventaris.HolderData onCreateViewHolder(ViewGroup parent, int viewType) {
    View layout = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_list_inventaris, parent, false);
    AdapterInventaris.HolderData holder = new AdapterInventaris.HolderData(layout);
    return holder;
}

@Override
public void onBindViewHolder(AdapterInventaris.HolderData holder, int position) {
    InventarisModel um = mList.get(position);
    holder.status.setText(String.valueOf(um.getStatus()));
    holder.alat.setText(um.getAlat());

    holder.checkbox.setOnCheckedChangeListener(null);
     
    holder.um = um;
}

@Override
public int getItemCount() {
    return mList.size();
}


class HolderData extends RecyclerView.ViewHolder {
    TextView  alat,status;
    InventarisModel um;
    public CheckBox checkbox;

    public HolderData(View v) {
        super(v);
        status  = (TextView) v.findViewById(R.id.txtNama);
        alat = (TextView) v.findViewById(R.id.txtAlat);
        checkbox = v.findViewById(R.id.checkbox);
    }
}
 }

这是我在片段 class:

中创建的视图
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_peminjaman_inventaris, container, false);

    mNama = (Spinner) v.findViewById(R.id.spnNama);
    mAkhirPeminjaman = (Button) v.findViewById(R.id.btnAwalPeminjaman);
    mAwalPeminjaman = (Button) v.findViewById(R.id.cari);
    mCari = (Button) v.findViewById(R.id.cari);
    mSimpan = (Button) v.findViewById(R.id.btnSimpan);
    mCancel = (Button) v.findViewById(R.id.btnCancel);
    msearchNama = (EditText) v.findViewById(R.id.txtSearchInvest);

    mRecycler = (RecyclerView) v.findViewById(R.id.recyclerIventaris);
    mRecycler.setLayoutManager(new LinearLayoutManager(getActivity()));


    ApiRequestInventaris api = RetroServerInventaris.getClient().create(ApiRequestInventaris.class);
    Call<ResponseInventarisModel> getdata = api.getInventaris();
    getdata.enqueue(new Callback<ResponseInventarisModel>() {
        @Override
        public void onResponse(Call<ResponseInventarisModel> call, Response<ResponseInventarisModel> response) {
            Log.d("RETRO", "RESPONSE : " + response.body().getKode());
            mItems = response.body().getResult();

            mAdapter = new AdapterInventaris(getContext(), mItems);
            mRecycler.setAdapter(mAdapter);
            mAdapter.notifyDataSetChanged();
        }

        @Override
        public void onFailure(Call<ResponseInventarisModel> call, Throwable t) {
            Log.d("RETRO", "FAILED : respon gagal");
        }
    });

    return v;
}
}

请修改您的onBindViewHolder()如下:

@Override
public void onBindViewHolder(AdapterInventaris.HolderData holder, int position) {
    InventarisModel um = mList.get(position);
    holder.status.setText(String.valueOf(um.getStatus()));
    holder.alat.setText(um.getAlat());

    holder.checkbox.setOnCheckedChangeListener(null);
     
    holder.um = um;

    holder.checkbox.setChecked(um.getStatus() == 1);   // if status 1, then set checked 
    //status to true  
}