0

アンドロイド 2.3.3

データベースに 2 つの列を持つテーブルがあります。このデータを取得し、2 つのテキストビュー (最初のテキストビューの最初の列と 2 番目のテキストビューの 2 番目の列) を持つ ListView に表示し、データベース内のすべての行に対してこれを繰り返します。(カスタムアダプターとリストビュー)の方法に関するいくつかの例を読みましたが、読めば読むほど混乱します。

誰かがこれを行う方法について有利なスタートを切ることができますか? 動的リストビューを使用できますが、静的リストビューを使用したいと考えています。

リストビューの行のレイアウトは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:paddingBottom="5dp"
    android:paddingTop="5dp" >

    <TextView
        android:id="@+id/txtView_History_Expression"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="0.50"
        android:text="Expression"
        android:textColor="#FFFFFF"
         />

    <TextView
        android:id="@+id/txtView_History_Result"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="0.50"
        android:text="Result"
        android:textColor="#316DA2" />

</LinearLayout>

ListView を使用した XML は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <TextView 
        android:id="@+id/txtView_History_Header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:text="HISTORY"
        android:gravity="center"
        android:textSize="24dp"
        android:textColor="#316DA2"
        android:paddingTop="10dp"
        />

    <ListView
        android:id="@+id/lvHistory"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

データベースからデータを取得し、カーソルに格納しています。Cursor からデータを読み取り、それらの値をリストビューのテキストビューに渡したいと思います。

4

3 に答える 3

1

できることは、Bind the List view from Database from Cursor Adapter を参照することだけです。SQLiteDatabase で Cursor Adapter を使用した ListView Example も確認してください。

これがあなたを導くことを願っています。

ありがとう。

于 2013-03-16T08:17:29.830 に答える
1

この流れに従えばいい

ステップ1 - >データベースからデータを取得し、リストにゲッターセッターを入力します

ステップ 2 -> BaseAdapter クラスを作成し、このクラスにそのリストを指定します [ここでは、BaseAdpter バインド メソッドを確認する必要があります]

手順 3 -> BaseAdapter オブジェクトを ListView にバインドする

于 2013-03-16T07:47:04.277 に答える
1

データベースに 2 つの列を持つテーブルがあります。このデータを取得し、2 つのテキストビュー (最初のテキストビューの最初の列と 2 番目のテキストビューの 2 番目の列) を持つ ListView に表示し、データベース内のすべての行に対してこれを繰り返します。(カスタムアダプターとリストビュー)の方法に関するいくつかの例を読みましたが、読めば読むほど混乱します。

こんにちは。このアルゴリズムはそれほどトリッキーではありません。次の手順が必要です。

  1. データベースから行を取得するためのメソッドを作成します。List<TableDataType>または直接戻ることができます Cursor
  2. 一部のサブクラスを作成ListAdapterして、より適切に制御します。
  3. に設定ListAdapterListViewます。

例:

データベースからデータを取得する方法:

public List<DataType> getAll() {
   List<DataType> objects = new ArrayList<DataType>();
   DataType child = null;
   Cursor c = null;    
   try {
      String query = "select * from TableName";
      c = db.rawQuery(query, null);
      if (c.moveToFirst()) {
         child = new DataType();
         child.setId(c.getInt(c.getColumnIndex("id")));
         child.setName(c.getString(c.getColumnIndex("name")));
         objects.add(child);  
      }
      return objects;
   }
   finally {
      if (c != null) {
         c.close();
      }
      if (db != null) {
         db.close();
      }
   }
}

次に、から拡張する独自のアダプターを作成し、メソッドでs にBaseAdapterデータを設定し、各行の子 (ウィジェット) を保持する任意のオブジェクトになるように作成できます。TextViewgetView()RowHolder

public View getView(int position, View convertView, ViewGroup parent) {
   if (convertView == null) {
      // inflate convertView and add row to RowHolder
      // set RowHolder as tag of row .. convertView.setTag(rowHolder);
   }
   else {
      // just recycle views so get existing RowHolder
      rowHolder = (RowHolder) convertView.getTag();
   }
   // set data to widget(s)
   rowHolder.getFirstTextView().setText(dataSource.get(position).getId());
   ...

}

RowHolderのように見えることができます

public class RowHolder {

   private View row;
   private TextView idColumn;

   public RowHolder(View v) {
      this.row = v;
   }

   public TextView getIdColumn() {
      if (idColumn == null) {
         idColumn = (TextView) row.findViewById(R.id.idColumnId);
      }
      return idColumn;


   }
}

そして最後に Adapter を にセットしListViewて作業は完了です。

ノート:

DataType独自に定義されたオブジェクトです。オブジェクトのプロパティがテーブルの列と同じであるデータベースにテーブルを表示します。

他のアプローチと db Cursor からの戻り、SimpleCursorAdapterまたはの使用がありCursorAdapterます。ここに良い例があります:

于 2013-03-16T08:07:42.490 に答える