私はActivityを持っています。これは単純に一覧表示のPair<String, String>
オブジェクトで構成されています。ListViewで要素の位置を強制的に設定するには
パブリックビューgetViewメソッド(INT位置、表示convertView、のViewGroup親) {
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>>
TextWithSubTextAdapter
は、持っています
lv.setAdapter(new TextSubTextAdapter(this, Common.physConstants));
私は要素のセットが限られている限り、スクロールする必要がないので、うまく動作します。
私はこの振る舞いは私がmCategories.get(position)
を呼び出すことによるものであることを疑う:私は十分な要素を追加する場合ただし、スクロールした後、項目は次のように、自分の位置を入れ替えます。ビューはバックグラウンドで保持されることはなく、Androidは毎回それらを再生成するので、position
はめったに同じ値を持たないため、同じアイテムを取得することはありません。
固定IDを取得する方法はありますか?固定位置のアイテムを取得する方法はありますか? getItemIDを使用しようとしましたが、実装する方法がわかりません。
注:すべての文字列はstrings.xmlファイルに含まれています。それらは比較されず、スタートアップ時に一度インスタンス化されます。
概念がFlyweightパターンと呼ばれているが、興味のある人のために:http://en.wikipedia.org/wiki/Flyweight_pattern – Patrick
確かに、ありがとうございました。私はビューがリサイクルされていることは分かっていましたが、どこでも見てきましたが、頭の中で私を打つ。 – pikzen