【发布时间】:2018-08-30 09:23:23
【问题描述】:
我已经制作了一个 recyclerview.in recyclerview 我有 n 个复选框,并且有一个全选按钮,它选择所有复选框都变为真。我已经做到了。现在我只想在状态为真时将值 pf 复选框保存在 arraylist 中,并在取消选择时从 arraylist 中清除它。在 selectall 按钮上,所有复选框都存储在 arraylist 中。我该怎么做。
public class SearchFragment extends BaseFragment {
ArrayList<String> arrayList = new ArrayList<>();
public TextView tv2;
public RecyclerView rvList;
Context context;
public static SearchFragment newInstance () {
return new SearchFragment();
}
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_search, container, false);
tv2=(TextView) view.findViewById(R.id.tv2);
rvList=(RecyclerView)view.findViewById(R.id.rvList);
arrayList = new ArrayList<>();
for (int i = 0; i < 10; i++){
arrayList.add("Produk " + i);
}
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
rvList.setLayoutManager(layoutManager);
MyAdapter mAdapter = new MyAdapter(getContext(),arrayList);
// 4. set adapter
rvList.setAdapter(mAdapter);
// 5. set item animator to DefaultAnimator
rvList.setItemAnimator(new DefaultItemAnimator());
return view;
}
@Override
public void onViewCreated (View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
tv2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyAdapter mAdapter = new MyAdapter(getContext(),arrayList);
rvList.setAdapter(mAdapter);
if(AppContants.CheckFlag){
AppContants.CheckFlag=false;
//arrayList.addAll(arrayList);
}
else{
AppContants.CheckFlag=true;
//arrayList.clear();
}
mAdapter.notifyDataSetChanged();
}
});
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private HashMap<Integer, Boolean> isChecked = new HashMap<>();
private Context mContext;
private LayoutInflater inflater;
CheckBox cbProduk;
ArrayList<String> arrayList = new ArrayList<>();
public MyAdapter(Context context, List<String> arrayList){
this.mContext = context;
this.arrayList = (ArrayList<String>) arrayList;
inflater = LayoutInflater.from(context);
}
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View rootView = inflater.inflate(R.layout.list_item_produt, parent, false);
MyViewHolder holder = new MyViewHolder(rootView);
cbProduk=(CheckBox)rootView.findViewById(R.id.cbProduk);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.cbProduk.setText(arrayList.get(position));
if (AppContants.CheckFlag) {
holder.cbProduk.setChecked(true);
} else {
holder. cbProduk.setChecked(false);
}
MyAdapter mAdapter = new MyAdapter(getContext(),arrayList);
if (AppContants.CheckFlag) {
holder.cbProduk.setChecked(true);
} else {
holder. cbProduk.setChecked(false);
}
}
@Override
public int getItemCount() {
return arrayList.size();
}
public void NotifyDatasetchanged() {
}
public class MyViewHolder extends RecyclerView.ViewHolder {
CheckBox cbProduk;
public MyViewHolder(View itemView) {
super(itemView);
cbProduk = (CheckBox) itemView.findViewById(R.id.cbProduk);
cbProduk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
cbProduk.setChecked(true);
Toast.makeText(mContext, "checklist", Toast.LENGTH_SHORT).show();
} else {
cbProduk.setChecked(false);
Toast.makeText(mContext, "unchecklist", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
}
【问题讨论】:
-
如果我不想在 shareprefrence 中保存价值怎么办。我想在arraylist中保存值。
-
查看link。
标签: android arraylist checkbox