2011-06-17 6 views
4

複数の配列を使用して複数の列を持つListViewを手動で設定する方法はありますか?私はレイアウトのセクションを構築する必要があり、私はListViewを使用したいが、いくつかのViewアイテムにデータを設定する必要がある。データベースから来ているわけではないので、私はカーソルを使いたくないので、いくつかの並列配列を使いたいだけです。これは可能ですか?あなたはgetViewメソッドを(オーバーライド、BaseAdaptorを拡張することができListViewを手動で設定する

)と、それはからのデータを表すウィジェットを含むいくつかのViewGroupを返すがあります。

答えて

1

私が正しくあなたの問題を解釈している天気をに応じて、これはアダプタで行うことが可能でなければなりません異なるリスト。リサイクルしやすい化合物のビューを構築するために選択したのViewGroupのサブクラス

:しかし必要everyithingない

public class DoubleText extends LinearLayout { 
    TextView t1, t2; 
    public DoubleText(Context c) { 
     super(c); 
     t1 = new TextView(c); 
     t2 = new TextView(c); 
     this.addView(t1, 0); 
     this.addView(t2, 1); 
    } 
    public void setText(String s1, String s2) { 
     t1.setText(s1); 
     t2.setText(s2); 
    } 
} 

サブクラスBaseAdapterが、示され、そこに、より多くのです 把握しやすくする必要があります、大きな違いは、アダプタを使用してに関する他の例に比べて あるこのとして:

public class DoubleAdaptor extends BaseAdaptor { 
    List<String> lista, listb; // <- these are your paralell arrays, they and the 
    Context c;     // context need to be initialized by some method 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     DoubleText recycled = (DoubleText) convertView; 
     if (recycled == null) { 
      recycled = new Double(context); 
     recycled.setText(lista.get(position), listb.get(position)); 
     return recycled; 
    } 
} 

また、あなたが肝炎にする必要はありませんすべての行で同じビュータイプ、つまりオーバーライド 異なるビューの数の上限をアンドロイドに与えるためのgetViewTypeCount() 使用するタイプと、その特定のリサイクルするビューのタイプ をアンドロイドに伝えるgetItemViewType(int position)行。

編集:アダプタ(インターフェイス)とBaseAdapter(抽象クラ​​ス)とListAdapter(インターフェイス)のAndroid開発者ドキュメントをチェックすることをお勧めします。また、ListViewにはsetAdapter()興味を持っている。

0

これは実行できます。あなたは本当に複数の並列配列を使いたいのであれば、BaseAdapterをサブクラス化するしかないかもしれません。オブジェクトの配列を使用している(または使用できる)場合は、ArrayAdapterから幾分単純なサブクラス化を行うことができます。後者の場合、オーバーライドする必要がある唯一の方法はgetViewだと思います。

0

これをメインリストアダプターとして使用してみましたか? - >https://github.com/commonsguy/cwac-thumbnail

CommonsGuyはそれについての素晴らしい例があり、動的項目を含むListViewを生成するためにカスタマイズするのは簡単です。

関連する問題