gpt4 book ai didi

android - ViewBinder setViewValue 有时只工作

转载 作者:行者123 更新时间:2023-11-30 03:33:00 28 4
gpt4 key购买 nike

我正在使用 SimpleCursorAdapter,我不确定为什么它有时会起作用。如果我重做相同的查询,我会得到不同的绑定(bind)。虽然我知道这与光标的内容无关。

我要做的就是在 cursor.getString(cursor.getColumnIndex(...)) 为 null 时将 TextView 设置为 null。它有时会起作用,但并非总是如此。这当然使调试变得非常困难。我在 LogCat 中注意到它似乎正在获取正确的值并将其设置为 textview 当它不为 null 时,但它不会在 ListView 中更新自身。我有时有一个很长的 ListView,比如 732 个结果。当我滚动列表时,我可以看到调用了 setViewValue 并说它设置了文本,但没有任何改变。 TextView kanjiTextView = (TextView) view; 行也从未为 null。

    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这个答案似乎与我的问题有点相似,但我不确定是否是同一个原因。

最佳答案

感谢您的回答!为其他人阐明主题:

如果您需要隐藏游标列没有值的 View 并且如果它有值(value),你想展示它,你需要让它再次可见!如果你不这样做它会在滚动后消失。

例子:

    public boolean setViewValue(View view, Cursor cursor,
int columnIndex) {

final int commentCol = cursor.getColumnIndex(COMMENT);

// hide comment if empty
if (columnIndex == commentCol) {

if (cursor.isNull(commentCol)) {
view.setVisibility(View.GONE);
}
else {
view.setVisibility(View.VISIBLE);
((TextView)view).setText(cursor.getString(commentCol));
}

return true;
}

return false;
}

关于android - ViewBinder setViewValue 有时只工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17136669/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com