我正在使用 SimpleCursorAdapter,但我不确定为什么它只在某些时候起作用。如果我重做相同的查询,我会得到不同的绑定。尽管我知道,但它与光标的含义无关。
我要做的就是将 TextView 设置为 null 如果cursor.getString(cursor.getColumnIndex(...))
为空。它有时有效,但并非一直有效。当然,这使得调试非常困难。我在 LogCat 中注意到,当它不为 null 时,它似乎获得了正确的值并将其设置为 textview,但它没有在 ListView 中更新自身。有时我有一个很长的 ListView,比如 732 个结果。当我滚动列表时,我可以看到 setViewValue 被调用并说它设置了文本,但没有任何改变。该TextView kanjiTextView = (TextView) view;
行也从未为空。
mAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View view, Cursor cursor, int columnIndex)
{
if (view.getId() == R.id.kanji)
{
if (cursor.getString(cursor.getColumnIndex("kanji")) == null)
{
view.setVisibility(View.GONE);
return true;
} else {
TextView kanjiTextView = (TextView) view;
kanjiTextView.setText(cursor.getString(cursor.getColumnIndex("kanji")));
return true;
}
}
return false;
}
我在这里缺少什么吗?如果我需要发布更多 LogCat 内容,请告诉我。
ViewBinder 创建随机内容这个答案似乎有点类似于我的问题,但我不确定这是否是相同的原因。