我有一个扩展 BaseAdapter 的适配器;其中定义了两个复选框。
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_layout, null);
holder = new ViewHolder();
holder.apkName = (TextView) convertView.findViewById(R.id.appname);
holder.category1 = (CheckBox) convertView.findViewById(R.id.category1);
holder.category1.setTag(position);
holder.category2 = (CheckBox) convertView.findViewById(R.id.category2);
holder.category2.setTag(position);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
PackageInfo packageInfo = (PackageInfo) getItem(position);
Drawable appIcon = packageManager.getApplicationIcon(packageInfo.applicationInfo);
String appName = packageManager.getApplicationLabel(packageInfo.applicationInfo).toString();
appIcon.setBounds(0, 0, 55, 55);
holder.apkName.setCompoundDrawables(appIcon, null, null, null);
holder.apkName.setCompoundDrawablePadding(15);
holder.apkName.setText(appName);
holder.category1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(holder.category1.isChecked()){
holder.2.setChecked(false);
int getPosition = (Integer) holder.category1.getTag();
}
}
});
holder.category2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton compoundButton, boolean b){
if(holder.category2.isChecked()){
holder.category1.setChecked(false);
int getPosition = (Integer) holder.educational.getTag();
}
}
});
return convertView;
}
基本上我所拥有的是我所有应用程序的列表,然后是两个复选框,您可以在其中选择一个或两个复选框。据我了解, getPosition 变量将区分复选框对?我想要的是存储用户已选中的复选框。我的想法是首先使用 SharedPreferences 并存储每个 getPosition 的布尔值,但 SharedPreferences 不起作用。那是因为我正在扩展 BaseAdapter 而不是 Activity 吗?如何检索我的主要活动中是否选中了复选框?