私は SimpleCursorAdapter を使用していますが、これが時々しか機能しない理由がわかりません。同じクエリをやり直すと、異なるバインディングが得られます。私は知っていますが、カーソルが持っているものとは何の関係もありません。
私がやろうとしているのは、 null の場合は TextView を null に設定することだけですcursor.getString(cursor.getColumnIndex(...))
。時々機能しますが、常に機能するわけではありません。もちろん、これによりデバッグが非常に困難になります。LogCat で、null でない場合は正しい値を取得してテキストビューに設定しているように見えますが、ListView では更新されていません。732 の結果のように長い ListView がある場合があります。リストをスクロールすると、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 はランダムなコンテンツを作成します。この回答は私の問題と似ているようですが、同じ理由かどうかはわかりません。