【发布时间】:2013-06-12 18:23:40
【问题描述】:
我正在使用 SimpleCursorAdapter,但我不确定为什么它只在某些时候有效。如果我重做相同的查询,我会得到不同的绑定。虽然我知道,但它与光标的作用无关。
如果cursor.getString(cursor.getColumnIndex(...)) 为空,我要做的就是将TextView 设置为空。它有时有效,但并非一直有效。当然,这使得调试非常困难。我在 LogCat 中注意到,当它不为空时,它似乎获得了正确的值并将其设置为 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 creates random content这个答案似乎与我的问题有点相似,但我不确定是否是相同的原因。
【问题讨论】:
-
使用自定义光标适配器让它工作。显然其中一个视图是不可见的。
if (cursor.getString(cursor.getColumnIndex("kanji")) == null) { TextView kanjiTextView = (TextView) view.findViewById(R.id.kanji); kanjiTextView.setVisibility(View.GONE); } else { TextView kanjiTextView = (TextView) view.findViewById(R.id.kanji); kanjiTextView.setVisibility(View.VISIBLE); kanjiTextView.setText(cursor.getString(cursor.getColumnIndex("kanji"))); }
标签: android simplecursoradapter android-viewbinder