关于Android Gallery Control的一般问题

时间:2011-09-28 11:55:13

标签: java android xml layout

所以,我一直在做一个项目的xml布局,涉及在屏幕上获取水平可滚动的图像行,并且仅使用horizo​​ntalscrollview这样做。和一堆图像按钮。我使用了一个include将它放在另一个xml布局页面上,然后另一个程序员将​​动态填充图像。

我的问题是,画廊控制如何让我们受益?我没有做太多的Java编程,我已经在网上看到了一些如何实现这个控件的指令,但是为什么你要使用它不是很多。看起来这个控件主要是通过数组插入Java来实现的,但除此之外,我无法分辨读取我创建布局的方式以及让其他程序员手动插入自己的图像有什么好处。

另一个相关问题 - 图库的这些图像需要我的图像视图,还是图像图?目前它们是图像映射,因为我们希望它们可以转到用户的配置文件等。

谢谢!

1 个答案:

答案 0 :(得分:2)

画廊近乎完美。在我的一个项目中,我确实有一个带有Gallery的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,因为我的项目确实来自网络。