我开始使用Android并使用ListActivity
创建基本待办事项列表。基本上,每次点击一个项目(一个条目)时,该项目在其对应的SharedPreferences
文件中被标记(或未标记)。此外,相应的TextView
也使用setPaintFlags
进行了大幅削减(或删除),如下所示:
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
SharedPreferences savedList = this.getPreferences(0);
String item = savedList.getString(position + "", "");
if ( item.contains(checked) ) {
item = item.replace(checked,"");
SaveItem(item, position);
((TextView)v).setPaintFlags( ((TextView)v).getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
}
else {
item = checked + item;
SaveItem(item,position);
((TextView)v).setPaintFlags( ((TextView)v).getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
}
}
("选中"这里只是一个字符串。)
在OnCreate
方法中,要阅读SharedPreferences
文件以重新加载核对清单中的项目,以及标记的任何项目,我想再次将其删除,如下所示:
for (int i = 0;; i++){
pos = i;
listitems = savedList.getString(""+i,"");
if (listitems.matches("")){ //if first entry in saved file is empty, stop the loop
break;
}
else if(listitems.contains(checked)){
listitems.replace(checked,"");
listItems.add(listitems);
adapter.notifyDataSetChanged();
TextView textview = (TextView) (getListView()).getChildAt(i);
textview.setPaintFlags( textview.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
}
else{
listItems.add(listitems);
adapter.notifyDataSetChanged();
}
}
这似乎不起作用,出现两个问题:首先,即使我删除了"已检查"从已检查的项目中,ListView
中显示的项目仍然有一个"已检查"。其次,罢工不会出现,让我相信相应的TextView
没有被捡起来。
编辑:忘了包含一些东西。
答案 0 :(得分:0)
View v
不是TextView,如果TextView有ID,您可以使用v.findViewById
在onListItemClick
上找到目标TextView;
TextView textview = (TextView) (getListView()).getChildAt(i);
您也可以使用getListView().getChildAt(i).findViewByid
答案 1 :(得分:0)
我无法正确地回答问题,但无论我从列表项中得到什么Textview
在onListItemClick
,您可以获得Textview
TextView textview = ((TextView) ((ViewGroup) v).getChildAt(1));
其中getChildAt(1)
1 是列表项的索引号