【发布时间】:2018-07-08 13:29:35
【问题描述】:
我有一个recyclerView,其中包含已安装应用程序的名称、包名称和图标。我在recyclerView 中添加了复选框,并且由于当我选中一个框并滚动然后框的状态发生变化时视图的循环性质。所以,我想知道的是,有没有办法让复选框在滚动后保持原样?我试过this 但无法掌握。我没有DataModel 课程。
这是我的回收站适配器:
public class AppsAdapter extends RecyclerView.Adapter<AppsAdapter.ViewHolder>{
Context context1;
List<String> stringList;
public AppsAdapter(Context context, List<String> list){
context1 = context;
stringList = list;
}
public static class ViewHolder extends RecyclerView.ViewHolder{
public CardView cardView;
public ImageView imageView;
public TextView textView_App_Name;
public TextView textView_App_Package_Name;
public CheckBox checkBox;
public ViewHolder (View view){
super(view);
this.setIsRecyclable(false);
cardView = (CardView) view.findViewById(R.id.card_view);
imageView = (ImageView) view.findViewById(R.id.imageview);
textView_App_Name = (TextView) view.findViewById(R.id.Apk_Name);
textView_App_Package_Name = (TextView) view.findViewById(R.id.Apk_Package_Name);
checkBox = (CheckBox)view.findViewById(R.id.cb);
}
}
@Override
public AppsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View view2 = LayoutInflater.from(context1).inflate(R.layout.cardview_layout,parent,false);
ViewHolder viewHolder = new ViewHolder(view2);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int position){
ApkInfoExtractor apkInfoExtractor = new ApkInfoExtractor(context1);
final String ApplicationPackageName = (String) stringList.get(position);
String ApplicationLabelName = apkInfoExtractor.GetAppName(ApplicationPackageName);
Drawable drawable = apkInfoExtractor.getAppIconByPackageName(ApplicationPackageName);
viewHolder.textView_App_Name.setText(ApplicationLabelName);
viewHolder.textView_App_Package_Name.setText(ApplicationPackageName);
viewHolder.imageView.setImageDrawable(drawable);
viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
//
}
});
}
@Override
public int getItemCount(){
return stringList.size();
}
}
【问题讨论】:
-
创建一个布尔数组,用于存储复选框状态并将其应用于 onBindViewHolder 函数。在视图持有者类中设置监听器 setOnCheckedChangeListener 并使用 getAdapterPosition 来了解位置。
标签: android checkbox android-recyclerview