2

私はsqliteデータベースからデータを取得し、データがリストビューに表示されるアプリを開発しています特定のテーブルの2つの列からデータを取得しています.SimpleCursorAdapterに追加され、リストビューに設定されます.各レコードを異なる列に表示して、それぞれの行に表示する 現在、両方の列のデータが 1 つの行に表示されている

私は自分のコードを追加することにしました

mDicCursor=managedQuery(DictionaryProvider.CONTENT_URI, null, null,
              new String[] {query}, null);

      if (mDicCursor == null ) {
          mTextView.setText(getString(R.string.no_results, new Object[] {query}));
    /*    final Dialog dialog = new Dialog(context);
            dialog.setContentView(R.layout.custom_dialog);
            dialog.setTitle("WORD MISSING");*/
            showDialog(DIALOG_WORDMISSING);


       //new AlertDialog.Builder(this).setTitle("Argh").setMessage("Watch out!").setNeutralButton("Close", null).show();  
      } else {
          int count = mDicCursor.getCount();
          String countString = getResources().getQuantityString(R.plurals.search_results,
                                  count, new Object[] {count, query});
          mTextView.setText(countString);


/*  int  iWord = mDicCursor.getColumnIndexOrThrow(DictDatabase.REC_DESCRIPTION);
    mTextView.setText(mDicCursor.getString(iWord));*/
     // Specify the columns we want to display in the result

    String[] from = new String[]{ DictDatabase.REC_WORD,
            DictDatabase.REC_DESCRIPTION   };




       // and an array of the fields we want to bind those fields to (in this case just text1)
     int[] to = new int[]{ R.id.text2,
                           R.id.text3};
      SimpleCursorAdapter words = 
         new SimpleCursorAdapter(this, R.layout.dictwords, mDicCursor, from, to);

      mListView.setAdapter(words);
4

2 に答える 2

0

2 つのテキストビューを含む別のレイアウトを作成し、それらを隣り合わせに配置します。アクティビティ「R.layout.new_layout」で、これを simplecursoradapter のコンストラクターで新しい 2 つのテキストビュー id.m と共に使用します。例:

SimpleCursorAdapter simple=new SimpleCursorAdapter(this, R.layout.new_layout,cursor, new String[]{column1,column2} , new int[] {textview1,textview2});
于 2012-07-18T10:39:23.610 に答える
0

カーソル アダプターでは、データがどのように設定され、画面に表示されるかを詳しく説明できます。2行ごとに2列目から来るようにする必要があります。これは、現在の行インデックスにモジュラスを使用して行うことができます

boolean isEvenRow = (currentRow % 2==0); // will give 0 for even rows, 1 for odd rows

次に、このブール値の結果を使用して、データが列 A または列 B のどちらから取得されるかを選択できます。

String data;
if (isEvenRow){
 data = mCursor.getString(COLUMN_A);
}else{
 data = mCursor.getString(COLUMN_B);
}

また、合計行数がカーソルのサイズの 2 倍になることを確認する必要があるため、数を返すときは、正しい値を返すようにしてください。

return mCursor.getCount()*2;

これにより、カーソルの長さの 2 倍のスクロールが可能になります。

于 2012-07-18T10:35:37.267 に答える