リスト行に別々のアイテムを表示しようとしています。だから私は4つのtextviewsを使用します。しかし、私はクラスのアクティビティを拡張するためにarrayadapterを使用します。今私は、そのテキストビューに応じて、行の文字列のリストを配置する必要があります。これを達成する方法は?どんな助けも高く評価されており、ありがとうございます。リストビューのArrayAdapter内で複数のテキストビューを使用するにはどうすればよいですか?
1
A
答えて
8
通常、私はそのような場合にはArrayAdapter
を延長しています。一般に、アダプター内の2つの関数getView()とコンストラクターの1つのみをオーバーライドする必要があります。
アダプタのコードは以下の通りです:代わりにArrayAdapterの
/** class to act as list adapter for rows List */
private static class FourTextListAdapter extends ArrayAdapter<MyDataClass> {
/** To cache views of item */
private static class ViewHolder {
private TextView text1;
private TextView text2;
private TextView text3;
private TextView text4;
/**
* General constructor
*/
ViewHolder() {
// nothing to do here
}
}
/** Inflater for list items */
private final LayoutInflater inflater;
/**
* General constructor
*
* @param context
* @param resource
* @param textViewResourceId
* @param objects
*/
public FourTextListAdapter(final Context context,
final int resource,
final int textViewResourceId,
final List<User> objects) {
super(context, resource, textViewResourceId, objects);
this.inflater = LayoutInflater.from(context);
}
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
View itemView = convertView;
ViewHolder holder = null;
final MyDataClass item = getItem(position);
if(null == itemView) {
itemView = this.inflater.inflate(R.layout.four_texts_item, parent, false);
holder = new ViewHolder();
holder.text1 = (TextView)itemView.findViewById(R.id.text1);
holder.text2 = (TextView)itemView.findViewById(R.id.text2);
holder.text3 = (TextView)itemView.findViewById(R.id.text3);
holder.text4 = (TextView)itemView.findViewById(R.id.text4);
itemView.setTag(holder);
} else {
holder = (ViewHolder)itemView.getTag();
}
holder.text1.setText(item.getText1());
holder.text2.setText(item.getText2());
holder.text3.setText(item.getText3());
holder.text4.setText(item.getText4());
return itemView;
}
}
4
SimpleAdapterを使用してみてください。上記のコードで
ArrayList<HashMap<String, String>> sampleArrayList;
SimpleAdapter sampleListAdapter;
HashMap<String, String> sampleObjectMap;
for (SampleObject sampleObj : sampleList) {
sampleObjectMap= new HashMap<String, String>();
sampleObjectMap.put("value1", sampleObj.getValue1());
sampleObjectMap.put("value2", sampleObj.getValue2());
sampleObjectMap.put("value3", sampleObj.getValue3());
sampleObjectMap.put("value4", sampleObj.getValue4());
sampleArrayList.add(sampleObjectMap);
}
sampleListAdapter= new SimpleAdapter(
context, sampleArrayList,
R.layout.custom_list_layout, new String[] {
"value1", "value2" , "value3", "value4"},
new int[] { R.id.list_content_column1,
R.id.list_content_column2,
R.id.list_content_column3,
R.id.list_content_column4});
sampleListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, String> sampleObjectMapLocal = sampleArrayList
.get(position);
final String value1Obj = sampleObjectMapLocal .get("value1");
System.out.println("value1Obj : " + value1Obj);
}
});
リストビューの内容は sampleArrayListのArrayList を使用して移入されたので、任意の列の項目はキー(「値1」、「値2」、「値3」、「value4を使用してアクセスすることができます")。
これが役に立ちます。
関連する問題
- 1. Python2.7ループ内で複数の変数を使用するにはどうすればよいですか?
- 2. テキストビューにバウンスアニメーションを適用するにはどうすればよいですか?
- 3. 複数の方法で複数変数を使用するにはどうすればよいですか?
- 4. フラグメント内で複数のレイアウトファイルを使用するにはどうすればよいですか?
- 5. 編集時に複数のテキストビューを消去するにはどうすればよいですか?
- 6. ArrayAdapterでonClickListenerを設定するにはどうすればよいですか?
- 7. ArrayAdapterクラスのgetViewメソッドでstartActivityForResultを使用するにはどうすればよいですか?
- 8. カスタムArrayAdapterでリストを安全に使用するにはどうすればよいですか?
- 9. 代替色で複数行の動的リストビューを追加するにはどうすればよいですか?
- 10. Android/Javaのリストビューに複数のテキストアイテムを表示するにはどうすればよいですか?
- 11. Androidでasync.processを使用してテキストビューのテキストを更新するにはどうすればよいですか?
- 12. 表示テキストのテキストビューで遅延を使用するにはどうすればよいですか?
- 13. 垂直リストビュー内で水平リストビューを作成するにはどうすればよいですか?
- 14. webviewを使用せずにAndroidでテキストビューを正当化するにはどうすればよいですか?
- 15. アダプターを使用してリストビュー内のテキストを変更するにはどうすればいいですか?
- 16. EclipseでJavaファイル用に複数のテンプレートを使用するにはどうすればよいですか?
- 17. JavaScriptで複数変数間でグローバル変数を使用するにはどうすればよいですか?
- 18. jsonをテキストビューに表示するにはどうすればよいですか?
- 19. C#複数のクラスで変数を使用するにはどうすればよいですか?
- 20. twisted deferToThreadで複数の関数を使用するにはどうすればよいですか?
- 21. Java - 複数のソースフォルダ間でグローバル変数を使用するにはどうすればよいですか?
- 22. __repr__を複数の引数で使用するにはどうすればよいですか?
- 23. テーブル外のテキストビューをテーブル行のテキストビューと比較するにはどうすればよいですか?
- 24. PHPで変数内の変数を使用するにはどうすればよいですか?
- 25. コントローラー関数内でディレクティブの関数を使用するにはどうすればよいですか?
- 26. 複数のSlickGridで汎用フォーマッタを使用するにはどうすればよいですか?
- 27. ArrayList内の複数の重複要素を数えるにはどうすればよいですか?
- 28. doctrine 2エンティティのリポジトリ内で複合基準を使用するにはどうすればよいですか?
- 29. 汎用クラス内でEnumの静的関数を使用するにはどうすればよいですか?
- 30. SSRSの単一のレポートペインで複数のデータセットを使用するにはどうすればよいですか?
+1これに同意すると、BaseAdapterも拡張できます。 –
どちらが私の場合にBaseAdapterとArrayAdapterのどちらを選択するかhttp://stackoverflow.com/questions/10617093/listview-and-arrayadapter-issue-how-do-i-proceed – aProgrammer