我在每个视图中都有一个带有checkedtextview的列表视图,我的所有项目都通过数据库进行操作,一切正常,但是我无法保存列表项的已检查状态,每次点击都有一个可绘制的设置,但我如果我开始另一项活动,不知道如何保存它,我非常感谢代码的答案,谢谢 请帮助!
listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View v, int position,
long id) {
// TODO Auto-generated method stub
CheckedTextView tt = (CheckedTextView) v
.findViewById(R.id.checkedview1);
if (!tt.isChecked()) {
tt.setChecked(true);
tt.setCheckMarkDrawable(R.drawable.checkedbox);
} else {
tt.setChecked(false);
tt.setCheckMarkDrawable(R.drawable.nullbox);
}
}
});
这是我的listview的xml和我的checkedtextview
<CheckedTextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/checkedview1"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:paddingTop="10dip"
android:paddingBottom="10dip"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:checkMark="@drawable/nullbox"
android:textSize = "18sp"
android:textColor="#000000"
android:listSelector="#ef0000"
&GT;
我的listview
<ListView
android:id="@+id/list1"
android:layout_width="match_parent"
android:layout_height="404dp"
android:cacheColorHint="#ffffff" />
这是我用来加载我的列表的适配器 checklistDB.open(); c = checklistDB.getAllTasks();
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
String task = c.getString(1);
adapter.add(task);
}
checklistDB.close();
答案 0 :(得分:0)
class CheckAdapter extends BaseAdapter {
class NormalListHolder {
ImageView check;
}
LayoutInflater layoutInflater;
NormalListHolder normalListHolder;
public CheckAdapter(Context context) {
layoutInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_item,
null);
normalListHolder = new NormalListHolder();
convertView.setTag(normalListHolder);
} else {
normalListHolder = (NormalListHolder) convertView.getTag();
}
normalListHolder.favoriteTag.setId(position);
normalListHolder.favoriteTag
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (favoriteStatus.get(v.getId())) { // favorite
favoriteStatus.set(v.getId(), false);
normalListHolder.favoriteTag.setImageSrc();
} else {
favoriteStatus.set(v.getId(), true);
normalListHolder.favoriteTag.setImageSrc();
}
notifyDataSetChanged();
}
});
return convertView;
}
}
我从我的代码编辑,但我不确定它是否有效(我编辑它不是很小心),我将解释我在下面做的事情:
1创建一个保存项目状态的ArrayList(或者滚动列表视图时复选框会混淆)
ArrayList<Boolean> favoriteStatus = new ArrayList<Boolean>();
2创建一个新的Adpater,并在其中创建一个 holder ,持有者将listitem中的视图绑定在一起。
通过持有人
将3个标签添加到列表项目中4点击它,在statusArray中查找状态,并在视图中输入正确的状态,然后发出notifyDatasetChange(如果它是一个复选框,可能不需要,因为我在这里使用了imageview)你也是可以在这里更新数据库或其他操作
抱歉我的游泳池英语,希望它可以帮到你