オブジェクトを一覧表示するだけのアクティビティがありPair<String, String>
ます。TextWithSubTextAdapter
ArrayAdapterを拡張するカスタムがあります。
public View getView(int position、View convertView、ViewGroup parent){
View view; if (convertView == null) { LayoutInflater li = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = li.inflate(R.layout.text_sub, null); TextView tv = (TextView)view.findViewById(R.id.mainText); tv.setText(mCategories.get(position).first); TextView desc = (TextView)view.findViewById(R.id.subText); desc.setText(Html.fromHtml(mCategories.get(position).second)); } else { view = (View) convertView; } return view;
}
mCategoriesはArrayList<Pair<String, String>>
次にlv.setAdapter(new TextSubTextAdapter(this, Common.physConstants));
、要素のセットが限られている限り、スクロールする必要がないので、うまく機能します。ただし、十分な数の要素を追加すると、スクロールした後、次のようにアイテムの位置が入れ替わります。
この動作は、私が。を呼び出したことが原因であると思われますmCategories.get(position)
。ビューがバックグラウンドで保持されることはなく、Androidが毎回ビューを再生成するためposition
、同じ値が表示されることはめったにないため、同じアイテムを取得することはありません。
定数IDを取得する方法はありますか?これにより、固定位置のアイテムを取得できますか?getItemIDを使おうとしましたが、実装方法がわかりません。
注:すべての文字列はstrings.xmlファイルから取得されます。それらは、起動時に比較されたり、一度インスタンス化されたりすることはありません。