0

我正在努力在列表视图中实现多个画廊。

列表视图有一个适配器(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;
}

}

任何想法或指示?

4

1 回答 1

0

在 KarolGusak 的帮助下,我设法解决了这个问题。问题实际上是画廊并没有像 Karol Gusak 指出的那样跨越整个宽度。

一个菜鸟的错误...

于 2013-02-12T19:27:39.333 回答