图库几乎是完美的。在我的一个项目中,我确实有一个带有画廊的 LinearLayout:
<Gallery
android:id="@+id/gallery"
android:layout_height="0dip"
android:layout_weight="1"
android:layout_width="fill_parent"
android:spacing="2dip" />
一个Activity实现了OnItemClickListener:
public class MyActivity extends Activity implements OnItemClickListener {
一个数据结构包含所有项目并被发送到一个适配器:
private void processGallery() {
adapter = new MyAdapter(this, containers, appName);
if (adapter != null) {
gallery.setAdapter(adapter);
}
}
@Override
public void onItemClick(final AdapterView<?> adapterView, final View view, final int position, final long id) {
if (containers != null) {
container = containers.get(position);
if (container != null) {
// Handle selected image
}
}
}
适配器是一个普通的 BaseAdapter - 没什么神奇的:
public class MyAdapter extends BaseAdapter {
private ArrayList<Container> containers;
private Context context;
public int getCount() {
return containers.size();
}
public Object getItem(final int position) {
return containers.get(position);
}
public long getItemId(final int position) {
return position;
}
public View getView(final int position, final View contentView, final ViewGroup viewGroup) {
ImageView imageView = new ImageView(context);
Container container = containers.get(position);
if (container != null) {
// Do your image thing here
}
return imageView;
}
public MyAdapter(final Context context, final ArrayList<Container> containers, final String appName) {
this.context = context;
this.containers = containers;
}
}
这个简单的代码提供了一个带有可点击项目的水平滚动图片库。点击发送到活动 - 无需在适配器中做一些花哨的事情。我从此处显示的代码中删除了我使用的 DrawableCache,因为我的项目确实来自网络。