1

誰かがリストビューをセクション化する方法の例を教えてもらえますか? リストビューにデータを表示するためにSimpleCursorAdapterを使用しています..

私のコードはこのようなものです。

private WordDbAdapter dbHelper;
private SimpleCursorAdapter dataAdapter;

これは onCreate() メソッドのコードです。

    dbHelper = new WordDbAdapter(this);
    dbHelper.open();

    //Clean all data
    dbHelper.deleteAllWords();
    //Add some data
    dbHelper.insertSomeWords();

    //Generate ListView from SQLite Database
    displayListView();

これは onCreate メソッドの外側のコードです。

@SuppressWarnings("deprecation")
private void displayListView() {


  Cursor cursor = dbHelper.fetchAllWords();

  // The desired columns to be bound
  String[] columns = new String[] {
          WordDbAdapter.KEY_WORD,

  };

  // the XML defined views which the data will be bound to
  int[] to = new int[] {

    R.id.Word,

  };

  // create the adapter using the cursor pointing to the desired data
  //as well as the layout information
  dataAdapter = new SimpleCursorAdapter(
    this, R.layout.word_info,
    cursor,
    columns,
    to
    );

  ListView listView = (ListView) findViewById(R.id.Diclist);
  // Assign adapter to ListView
  listView.setAdapter(dataAdapter);


  listView.setOnItemClickListener(new OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> listView, View view,
     int position, long id) {
   // Get the cursor, positioned to the corresponding row in the result set
   Cursor cursor = (Cursor) listView.getItemAtPosition(position);


   // Get the word name from this row in the database.
   String wordSelected =
               cursor.getString(cursor.getColumnIndexOrThrow("word"));

       String wordSyllabication =
               cursor.getString(cursor.getColumnIndexOrThrow("syllabication"));
       String wordPartofSpeech =
               cursor.getString(cursor.getColumnIndexOrThrow("partofspeech"));
       String wordMeaning =
               cursor.getString(cursor.getColumnIndexOrThrow("meaning"));

       EditText TextDic = (EditText) findViewById(R.id.TextDic);
       TextDic.setText(wordSelected);


       Toast.makeText(getApplicationContext(),
               wordSyllabication + "\n" + wordPartofSpeech + "\n" + wordMeaning , Toast.LENGTH_SHORT).show();

       }
      });
4

3 に答える 3

3

あなたはこれを試すことができます。

ListViewsの例でこのAndroidセクションを見てください。これは、ListViewsでセクションを実装する方法をうまく説明しています。

android-amazing-listview

ジェフ・シャーキーのSeparatedListAdapter

CommonsWareによるMergeAdapter

http://w2davids.wordpress.com/android-sectioned-headers-in-listviews/

ありがとう。

于 2013-01-19T05:32:40.857 に答える
0

このブログでセクション化されたリストビューの良い例を見つけました。これはArrayAdapterを使用して行われますが、概念を確認し、それに応じてコードを操作してSimpleCursorAdapterで機能させることができます。お役に立てば幸いです!!

于 2013-01-19T05:31:03.140 に答える
0

位置を再マップする必要があるため、カーソル アダプターでは注意が必要です。これを支援するために、 SectionCursorAdapterというライブラリを作成しました。実装は本当に簡単です。これをデータで機能させるには、SectionCursorAdapter を拡張するときに次のようにします。

@Override
protected Object getSectionFromCursor(Cursor cursor) {
    int columnIndex = cursor.getColumnIndex("word");
    String word = cursor.getString(columnIndex);
    return word.toUpperCase().substring(0, 1);
}

現在、ビューのリサイクルについて心配する必要はありませんが、データを自分でバインドする必要があります。このライブラリが十分に普及したら、SimpleSectionCursorAdapter を追加します。

于 2014-04-10T22:16:45.020 に答える