画廊几乎完美。在我的项目之一,我确实有一个画廊在它的LinearLayout:
<Gallery
android:id="@+id/gallery"
android:layout_height="0dip"
android:layout_weight="1"
android:layout_width="fill_parent"
android:spacing="2dip" />
的活动实现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,因为我的项目确实来自网络。
你能给一个完整的源代码版本吗? – Jaseem
您需要的所有内容都显示在上面的代码中。你有什么具体的部分不清楚? –
我只是想知道如果一个API可以比Android更混乱。你需要50多行代码和10个图像库导入吗? Android API在某处出现错误。难怪它来自谷歌,在dart lang的背后,你需要15K +的线路才能成为Hello World。这整件事对我来说似乎没有好处。 – Jaseem