我在ListView
中有一个Activity
。 ListView
行各LinearLayout
行,包含两个子View
,两者均为clickable
。结构是这样的 -
______________________________
| | |
|______|_______________________|
现在,我想保留两个clickable
项并检测父View
上的滑动操作,即the LinearLayout
。
你能否告诉我最好的办法是什么?
答案 0 :(得分:3)
现在,我想保持这两个项目可点击并检测滑动操作 在父视图上,即LinearLayout。
您可以创建自己的行View
,其中包含LinearLayout
并将包装这两个子视图。为此,使用onInterceptTouchEvent
和onTouch
方法来检测滑动。如果您需要知道当前正在滑动哪一行,您可以让自定义视图记住它在列表中的位置,并更新适配器的getView
方法中的位置。
我认为另一个选择是在普通行视图的顶部有一个覆盖视图,用于处理滑动。
答案 1 :(得分:1)
在BaseAdapter
覆盖getView
中,获取每个孩子的引用并为每个孩子设置onClickLister
,每次调用getView
时,示例:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
convertView = inflater.inflate(R.layout.layout, parent,false);
}
final MyClass item = (MyClass)getItem(position);
View child1 = convertView.findViewById(R.id.child1);
child1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("tag", "child1 from item "+ position +" , is clicked.");
}
});
View child2 = convertView.findViewById(R.id.child2);
child2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("tag", "child2 from item "+ position +" , is clicked.");
}
});
return convertView;}
并且对于Swipe,扩展您的LinearLayout
并覆盖其中的onInterceptTouchEvent
,并将其传递给GestureDetector
并处理其上的滚动。
有关GestureDetector
和轻扫的更多信息,请查看Google以查找GestureDetector
和SimpleOnGestureListener
个样本。