谁能告诉我如何将 a 嵌入Gallery
到 aListVview
中,以便我可以在里面的图像上进行水平滚动ListView
?
问问题
3949 次
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 回答