1

私は 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 はランダムなコンテンツを作成します。この回答は私の問題と似ているようですが、同じ理由かどうかはわかりません。

4

1 に答える 1