名前と組織の Android アプリで TextView のリストを作成しようとしています。ただし、リスト全体は同じです。たとえば、次のようになります。
Joe's work for Construction Co.
15hrs of 60hrs
Joe's work for Construction Co.
15hrs of 60hrs
Joe's work for Construction Co.
15hrs of 60hrs
...
アプリのリストで 5 回繰り返されます。関連するコードは次のとおりです。
class IconicAdapter extends ArrayAdapter<Long> {
private ArrayList<Long> items;
private FakeIDO ido;
public IconicAdapter(Context context,int textViewResourceId, ArrayList<Long> ids, FakeIDO ido){
super(WorkList.this, R.layout.feed_list, ids);
this.items = ids;
this.ido = ido;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
for(long id : items){
TextView tt = (TextView) v.findViewById(R.id.toptext);
TextView bt = (TextView) v.findViewById(R.id.bottomtext);
if (tt != null) {
tt.setText(ido.getName(id) + "'s work for " + ido.getOrganization(id));
}
if(bt != null){
bt.setText( ido.totalWorked(id) + "hrs of " + ido.estimatedHours(id) + "hrs");
}
}
return v;
}
このクラスが動作している xml ビューは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<LinearLayout
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="fill_parent">
<TextView
android:id="@+id/toptext"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center_vertical"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:id="@+id/bottomtext"
android:singleLine="true"
android:ellipsize="marquee"
/>
</LinearLayout>
これで、「TextView tt = (TextView) v.findViewById(R.id.toptext);」を呼び出したときに同じインスタンスが返されることはわかりましたが、それぞれ新しいインスタンス オブジェクトを取得するには何を変更すればよいかわかりません。時間。私は何が欠けていますか?