リストビューのlistitemsにデータを設定する際にあなたの助けが必要です。私のリストビューでは、各アイテムにViewPagerがあり、各ビューページャーには異なるデータが必要です。ビューページャーごとに異なるデータを設定する方法がわかりません。実際には、listitemインデックスに基づいて、データビューページャーを設定する必要があります。以下に貼り付けたコードスニペットを確認して、私を助けてください。
public class MyListAdapter extends BaseAdapter {
private Activity activity;
private String [] titleData;
private int [] imageData;
private static LayoutInflater inflater=null;
private int iListPosition;
private GraphicalView graphView ;
ListView dashListView;
private Context context;
public MyListAdapter(View listView, Activity a, String[] titles, int[] images) {
activity = a;
context = a.getApplicationContext();
dashListView = (ListView)listView;
}
public int getCount() {
return titleData.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
iListPosition = position;
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) activity.getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.dash_board_list_row, parent, false);
MyPagerAdapter adapter = new MyPagerAdapter();
ViewPager myPager = (ViewPager) rowView.findViewById(R.id.threepageviewer);
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
return rowView;
}
private class MyPagerAdapter extends PagerAdapter {
public int getCount() {
return 3;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case 0:
resId = R.layout.weight_middle;
break;
case 1:
resId = R.layout.weight_left;
break;
case 2:
resId = R.layout.weight_right;
break;
}
View view = inflater.inflate(resId, null);
if(resId == R.layout.weight_left && iListPosition == 0){
LinearLayout layout = (LinearLayout) view.findViewById(R.id.chartView);
layout.addView(graphView);
}
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
}
}
}
ただし、ここでは、すべてのリストアイテムのビューページャーに同じデータが設定されています。理想的には、私の要件は異なるデータを設定することです。あなたがこれに対する解決策を持っている/知っているかどうか私に知らせてください。