0

谁能告诉我如何将 a 嵌入Gallery到 aListVview中,以便我可以在里面的图像上进行水平滚动ListView

4

2 回答 2

3

检查这篇文章,它对我有用。

我的设置如下:

  • 我有一个ListActivity使用 anArrayAdapter来填充数据的。
  • 我的 XML 资源list_item包含一个 ImageView、TextView 和一个 Gallery。
  • 我在行中添加了一个OnClickListener(就像您通常处理列表项点击一样。)
  • 然后我为画廊设置适配器
  • GestureListener我在处理滑动的图库中添加了一个
  • 我在图库中添加一个OnItemClickListener来处理单击图库中的图像

在我的ArrayAdapter我做以下:

private static final int SWIPE_MAX_OFF_PATH = 250;
private GestureDetector gestureDetector;
private OnTouchListener gestureListener;
private Gallery picGallery;

...

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View row = convertView;

    /* Holder pattern here, commented out for clarity */

    // We need to set the onClickListener here to make sure that
    // the row can also be clicked, in addition to the gallery photos
    row.setOnClickListener(new MyOnClickListener(context,position));

    // Set the adapter for the gallery
    picGallery = (Gallery) row.findViewById(R.id.gallery);
    picGallery.setAdapter(
               new MyGalleryAdapter(/* some input data here to populate the gallery */));

    // GestureDetector to detect swipes on the gallery
    gestureDetector = new GestureDetector(new MyGestureDetector());
    gestureListener = new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return gestureDetector.onTouchEvent(event);
        }
    };

    // Detect clicking an image
    picGallery.setOnItemClickListener(new MyOnItemClickListener(context));

    // Detect swipes
    picGallery.setOnTouchListener(gestureListener);

    return row;
 }

...

private class MyGestureDetector extends SimpleOnGestureListener {
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        try {
            if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                return false;
        } catch (Exception e) {
            // nothing
        }
        return false;
    }

}

...

private class MyOnItemClickListener implements OnItemClickListener{    
    private Context context;

    public MyOnItemClickListener(Context context){
        this.context = context;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        Intent intent = new Intent(context, PhotoDetailActivity.class);
        intent.putExtra("id", id);
        context.startActivity(intent);

    }

}
于 2012-07-18T15:04:47.330 回答
0

您需要列表视图吗?也许您可以在 ScrollView 中放置一个 LinearLayout(垂直)?

于 2012-04-13T06:11:20.273 回答