Hello. I'm developing an Android app, and after selecting a check box in the Listview in my app, I need to put a specific text in the ArrayList and save that part, and then turn it back on using the saved part, the same check box should be checked.
I checked with the following code using the for statement.
for(int i=0; i<TargetList.size(); i++) {
if(TargetList.get(i).equals(appListItem.PackageName)) {
if(holder.checkBox.isChecked()) {
holder.checkBox.setChecked(false);
}
else {
holder.checkBox.setChecked(true);
}
}
}
However, when I checked it like this, it seemed to work well, but sometimes there was a problem that the wrong check box was released, not the check box I pressed. I've been thinking about it for hours, but I don't know how to fix it ㅠ<
The entire source code of getView for the adapter in question.
@Override
public View getView(final int pos, View convertView, ViewGroup parent) {
final ViewHolder holder;
final appListItem appListItem = mListData.get(pos);
ArrayList<String> TargetList = Util.getStringArrayPref(context, "TargetList");
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
try {
if (convertView == null) {
convertView = inflater.inflate(R.layout.select_listview, parent, false);
holder = new ViewHolder();
holder.PackageName = (TextView) convertView.findViewById(R.id.packagenames);
holder.Label = (TextView) convertView.findViewById(R.id.applabel);
holder.Icon = (ImageView) convertView.findViewById(R.id.appicon);
holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkBox);
convertView.setTag(holder);
} } else {
holder = (ViewHolder) convertView.getTag();
}
holder.PackageName.setText(appListItem.PackageName);
holder.PackageName.setTag(pos);
holder.Label.setText(appListItem.Label);
holder.Label.setTag(pos);
if (appListItem.Icon != null) {
holder.Icon.setVisibility(View.VISIBLE);
holder.Icon.setImageDrawable(appListItem.Icon);
} } else {
holder.Icon.setVisibility(View.GONE);
}
holder.checkBox.setChecked(((ListView)parent).isItemChecked(pos));
holder.checkBox.setTag(pos);
for(int i=0; i<TargetList.size(); i++) {
if(TargetList.get(i).equals(appListItem.PackageName)) {
if(holder.checkBox.isChecked()) {
holder.checkBox.setChecked(false);
}
else {
holder.checkBox.setChecked(true);
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
return convertView;
}
http://stackoverflow.com/questions/37224342/how-save-checkbox-checked-into-database
I've seen the second part of the Stackoverflow article above and solved it! Thank you!
© 2024 OneMinuteCode. All rights reserved.