アプリに ListView があり、ImageView のみが含まれています。各行には、ランダムな選択方法に応じて、1 つ、2 つ、または 3 つの画像が表示されます。しかし、私が現在直面している問題は、スクロールすると、画像を常に一定に保ちたいときに、画像の順序が変更されることです。さらに、効率的な「int」反復子を使用して行の次の画像を取得して表示したにもかかわらず、画像が繰り返されます。
同様の問題を扱う他の質問を確認しましたが、ImageViews を扱っていません。私は初心者なので、助けていただければ幸いです。
public class YPAdapter extends BaseAdapter{
public Context context;
public ArrayList<ImageDetails> flowImages = new ArrayList<ImageDetails>();
LayoutInflater inflater;
private ArrayList mData = new ArrayList();
public int i = Home.getStart();
YPAdapter(Context context, ArrayList<ImageDetails> name, int start) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.context = context;
this.flowImages = name;
}
public void addItem(final int item) {
mData.add(item);
notifyDataSetChanged();
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public int getItemViewType(int position) {
int x = 0;
if (Integer.parseInt(mData.get(position).toString()) == 1) x = 0;
else if(Integer.parseInt(mData.get(position).toString()) == 2) x = 1;
else if(Integer.parseInt(mData.get(position).toString()) == 3) x = 2;
return x;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int mode = getItemViewType(position);
if(convertView == null)
{
switch(mode){
case 0:
convertView = inflater.inflate(R.layout.image_container_1, parent, false);
if(i < (flowImages.size()))
{
ImageView imageView = (ImageView) convertView.findViewById(R.id.logo_1);
ArrayList<ImageDimensions> dimensions = new ArrayList<ImageDimensions>();
dimensions = ImageSorter.getLayout(1);
// get parameters
// set image with url
i++;
}
break;
case 1:
convertView = inflater.inflate(R.layout.image_container_2, parent, false);
if(i < (flowImages.size()-1))
{
ImageView imageView1 = (ImageView) convertView.findViewById(R.id.logo_2_1);
ImageView imageView2 = (ImageView) convertView.findViewById(R.id.logo_2_2);
ArrayList<ImageDimensions> dimensions = new ArrayList<ImageDimensions>();
// get parameters for 2 images
// set image for first imageview
i++;
// set image for second imageview
i++;
}
break;
case 2:
convertView = inflater.inflate(R.layout.image_container_3, parent, false);
if(i < (flowImages.size()-2))
{
ImageView imageView1 = (ImageView) convertView.findViewById(R.id.logo_3_1);
ImageView imageView2 = (ImageView) convertView.findViewById(R.id.logo_3_2);
ImageView imageView3 = (ImageView) convertView.findViewById(R.id.logo_3_3);
ArrayList<ImageDimensions> dimensions = new ArrayList<ImageDimensions>();
// get parameters for 3 images
// set image with url for first imageview
i++;
// set image for second imageview
i++;
// set image for third imageview
i++;
}
break;
}
}
return convertView;
}
public Object getItem(int position) {
return mData.get(position);
}
public long getItemId(int position) {
return position;
}
}
これは ListView の XML です。
<ListView
android:id = "@+id/home_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</ListView>