2011-11-17 23 views
2

からリストビューを取り込みますArrayList<HashMap<Contact, Name>>があり、ListViewにそれを設定したいと思います。どのようなタイプのアダプタを使用できますか?アダプタのfromフィールドには何を配置しますか?以下の例:Arraylist <HashMap <String、String >>

String[] from = ? 
int[] to = new int[] { R.id.contact, R.id.name}); 
adapter = new KindOfAdapter(this, R.layout.row, from, to) 

希望です。助けをお待ちしています。ここ

+0

を使用してください。CursorAdapter – Shaireen

答えて

2

1.私はあなたの最善の策は、BaseAdapterを拡張して実装することだと思いますBaseAdapter

を実装次の方法:

getCount() 
getItem(int) 
getItemId(int) 
getView(int, View, ViewGroup) 

これは次のようになります。

public class MyAdapter extends BaseAdapter() { 
    private List<Map<Contact, Name>> map; 
    private Context context; 

    public MyAdapter(List<Map<Contact, Name>> map>, Context context) { 
     this.map = map; 
     this.context = context; 
    } 

    public int getCount() { 
     return map.size(); // or do you want one list item per name? 
     // if so, just count out all the map entries in each item of the list 
    } 

    public int getItemId(int position) { 
     return position; // doesn't matter too much... 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     // populate the view here... 
     // use LayoutInflater.from(context).inflate(resource, parent, false) to inflate new views 
    } 
} 

2)(getViewメソッドを実装する場合ViewHolderパターンに

の使用について綿密て、このデザインパターンを利用して大量のメモリを節約します:

http://www.screaming-penguin.com/node/7767

+0

このような意味がありますが、私は母集団のプロセスを理解しようとしています。 getView()はHashMapから各行のデータをどのように取得しますか? newView()を実装しないでください。助けてくれてありがとう! – Phat7

+0

getView()メソッドに渡された位置引数を調べます。保存されたリストから直接データにアクセスすることができます。 newView()を実装する必要はありません。 – jkschneider

+0

ありがとう!私はこれを調べます。 – Phat7

0

アンArrayAdapter > - ArrayAdapterはArrayList(および配列[])とともに使用するように設計されていますが、Viewバインディングをサポートしていないため、getView()をオーバーライドするだけです

0

このlinkがあなたに役立つと確信しています。 サンプルソースコードもダウンロードしてください。

関連する問題