我正在努力在列表视图中实现多个画廊。
列表视图有一个适配器(BaseAdapter),它用数据填充列表。适配器由一个文本视图(指定画廊的名称)和一个画廊组成。在这个适配器中,我实例化了 Gallery 对象并将一个新的适配器(用图像填充画廊)附加到画廊对象。
问题如下:每一行都填充了一个名称和一个画廊对象——这很好用。但是每个画廊只有一张图片,而不是 10 张图片(测试数据)。
代码片段:
用于填充列表视图的适配器
public class Adapter_GalleryList extends BaseAdapter
{
private static final String ERRORTAG = "ERROR_CHECKING --> ";
//Components
private Context context;
//Global variables
private Object_Event[] events;
public Adapter_GalleryList(Context context, Object_Event[] events)
{
this.context = context;
this.events = events;
}
public int getCount()
{
return events.length;
}
public Object getItem(int position)
{
return position;
}
public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
//Inflate the each row of the list with the gallerylist layout
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.row_gallerylist, parent , false);
//Configure a typeface for the text headings
Typeface quackery = Typeface.createFromAsset(context.getAssets(), "fonts/tpf_quackery.ttf");
//Instantiate the row's components
TextView textEventName = (TextView) rowView.findViewById(R.id.event_name);
Gallery eventGallery = (Gallery) rowView.findViewById(R.id.gallery);
//Populate the components with data
textEventName.setTypeface(quackery);
textEventName.setText(events[position].Name);
Integer[] images = new Integer[10];
images[0] = R.drawable.button_events;
images[1] = R.drawable.button_events;
images[2] = R.drawable.button_events;
images[3] = R.drawable.button_events;
images[4] = R.drawable.button_events;
images[5] = R.drawable.button_events;
images[6] = R.drawable.button_events;
images[7] = R.drawable.button_events;
images[8] = R.drawable.button_events;
images[9] = R.drawable.button_events;
Adapter_EventGallery adapter = new Adapter_EventGallery(context,images);
eventGallery.setAdapter(adapter);
//OnClickListener for images in the gallery
eventGallery.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
Toast.makeText(context, "" + position, Toast.LENGTH_SHORT).show();
}
});
return rowView;
}
}
用于填充独立画廊的适配器
public class Adapter_EventGallery extends BaseAdapter
{
private static final String ERRORTAG = "ERROR_CHECKING --> ";
//Component variables
private Context adapterContext;
private Integer[] images;
public Adapter_EventGallery(Context passedContext, Integer[] images)
{
adapterContext = passedContext;
this.images = images;
}
public int getCount()
{
Log.i(ERRORTAG, "Length: " + images.length);
return images.length;
}
public Object getItem(int position)
{
return position;
}
public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
Log.i(ERRORTAG, "EventGallery Position: " + position);
ImageView galleryImage = new ImageView(adapterContext);
galleryImage.setImageResource(images[position]);
galleryImage.setLayoutParams(new Gallery.LayoutParams(250, 250));
galleryImage.setScaleType(ImageView.ScaleType.FIT_XY);
//galleryImage.setBackgroundResource(mGalleryItemBackground);
return galleryImage;
}
}
任何想法或指示?