如何通过改造在 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
}
如果状态值为 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
}