2011-07-10 9 views
1

私はこのような状況があればと思いまして:(さんは4を言わせて)私たちのSQLite databseでAndroidのさまざまなSQLiteテーブルからデータを取得していますか?

  • を、いくつかのテーブルがあります。各テーブルは2つの列、すなわちTitle and Contentからなる。
  • は、我々は、すべての4つのテーブルからタイトルを取得し、そして1つのListView

質問に表示している:どのように私たちはことを考えると、選択した項目のContentを取り出すことができるようにonItemClickListenerを扱うことができますアイテムは異なるテーブルにありますか?

私はそのような問題に遭遇すると思います。私はそれが処理できるかどうかを知りたいと思っています。

ありがとうございました。

+0

だから、アイテムがどのテーブルから来たのか知りたいですか? –

+0

だから私は問題はあなたが異なるテーブルからのアイテムを持っていることを理解し、あなたがそれを選択すると、それはどのテーブルから識別する必要がありますか? –

+0

まったく同じです。対応するコンテンツ – iTurki

答えて

2

私はArrayAdapterを使って、元のテーブルを含むカスタムクラス(必要ならばIDなど)にデータをラップしてから、インデックスを知るだけでIDとテーブルを取得できますリスト。クラスは次のようなものになります

public static class ListItem { 
    public String title, table; 
    // Maybe include these as well? 
    public String content; 
    public int id; 

    @Override 
    public String toString() { 
     return title; // Or something else maybe? 
    } 
} 

を次に単にListItem[]にカーソルからデータを構築し、このようなアダプタを作成します。このソリューションで
new ArrayAdapter<ListItem>(data);

1つの問題は、たくさんのデータがある場合は、Cursorカスタムを作成して、4つのカーソルをすべて含み、代わりにCursorAdapterを使用することができます。

+0

を検索するには、 'カーソルからListItem []'にデータをビルドするという意味がありませんでした。説明できますか? – iTurki

+0

execSqlを使用してテーブルから一連のカーソルを読み取って、各エントリを配列に追加する4つすべて(各テーブルに1つずつ)繰り返します。 –

+0

いいですね。私はそれで在庫していないことを願って:)。ありがとう – iTurki

1

解決策のNicklas A.提案は、そのトリックを行います。しかし、あなたが同じアイテムを持っている場合、なぜそれらを4つの異なるテーブルに保管しますか?あなたがアイテムが同一であれば、それらをサインテーブルに保持し、必要に応じてそれらを識別するための列を追加するだけです。あなたのアイテムが同一でない場合は、それぞれのモデルクラスを4つ作成し、各モデルのonItemClickedを処理します。

関連する問題