Я использую SimpleCursorAdapter, и я не уверен, почему это работает только иногда. Если я повторю один и тот же запрос, я получаю разные привязки. Это не имеет никакого отношения к тому, что имеет курсор, хотя я знаю.ViewBinder setViewValue работает только иногда
Все, что я пытаюсь сделать, это установить TextView в null, если cursor.getString(cursor.getColumnIndex(...))
имеет значение NULL. Он работает иногда, но не все время. Конечно, это очень сложно отладить. Я заметил в 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 Этот ответ кажется похожим на мою проблему, но я не уверен, если это та же причина или нет.
получил его работу с помощью настраиваемого CursorAdapter. видимо, один из взглядов не был виден. '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 ("кандзи"))); } ' – John61590