所以我在ListView项目上应用删除线时会遇到这个大问题,同时从我的对象列表中填充它。
private void setListItems() {
DatabaseHandler db = new DatabaseHandler(this);
List<ToDoTask> taskList = db.getAllTasks();
for (ToDoTask tt : taskList) {
this.listAdapter.add(tt.getName());
}
this.listAdapter.notifyDataSetChanged();
}
这部分代码填充了我的ListView。现在我想在项目中添加删除线
tt.getActive() == 0
我不知道如何从ListView获取TextView项目。我在for循环中试过:
TextView textView = (TextView) this.listView.getChildAt(this.listView.getCount() -1);
但应用程序崩溃了。 没有崩溃我的应用程序的唯一解决方案是:
TextView textView = this.listAdapter.getView(this.listView.getCount() -1, null, null)
但它实际上并没有改变ListView中的任何内容。我认为它不是引用对象本身。 这是一些实例化我的变量的代码:
this.listView = (ListView) findViewById(R.id.listViewItem);
this.listItems = new ArrayList<String>();
this.listAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, this.listItems);
this.listView.setAdapter(this.listAdapter);
答案 0 :(得分:2)
列表视图不负责实例化或修改它包含的视图的基础状态。这是适配器的工作。当您滚动ListView时,它会调用适配器方法getView()
,并且适配器将把它交给一行(可能是从屏幕外滚动的行中的循环视图)。
在getView()
方法中,适配器应查询基础数据集并根据需要修改行 - 包括删除文本或设置行内容的任何可视属性。