Thêm boolean biến Touchdown và Touchup đến lớp bộ chuyển đổi như sau dường như làm việc khá tốt:
private class MyListAdapter extends ArrayAdapter<MyObject>{
...
//touch down + touch up with no other motion events in between = click
boolean touchDown = false;
boolean touchUp = false;
private int iHostViewID;
...
public MyListAdapter(Context context,int viewResourceId, List<MyObject> objects) {
super(context, textViewResourceId, objects);
iHostViewID = viewResourceId;
}
@Override
public View getView(int pos, View convertView, ViewGroup parent){
View itemView = convertView;
//iff we cannot re-use a view
if(itemView == null){
LayoutInflater inflater = (
(LayoutInflater)hContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
itemView = inflater.inflate(iHostViewID, null);
}
final View hItemView = itemView;
final int hPosition = pos;
...
final HorizontalScrollView textDataSV =
(HorizontalScrollView)itemView.findViewById(R.id.widget_hsv);
textDataSV.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
touchDown = true;
}
else if(event.getAction() == MotionEvent.ACTION_UP){
touchUp = true;
}
else{
touchDown = false;
touchUp = false;
}
if(touchDown && touchUp){
//click
//mMyListView is the reference to the list view
//instantiated in the view controller class responsible
//for setting this adapter class as the list view's adapter
mMyListView.performItemClick(hItemView, hPosition,
hItemView.getId());
}
return false;
}
});
}
}
Đó là xa hoàn hảo, nhưng nên làm việc cho hầu hết các tiêu chuẩn trường hợp sử dụng
xin vui lòng sử dụng cố gắng bắt blog surroung listview bấm vào sự kiện và in lỗi trong nhật ký và đăng ur lỗi ở đây để chúng tôi có thể exatcly biết những gì đang xảy ra. – Aamirkhan
Tôi không có bất kỳ lỗi nào ... Vấn đề là phải làm với hành vi của các chế độ xem khi chúng được thiết lập theo cách này. – startupsmith
ok u có thể đăng ur xml tập tin mà u r sử dụng như adatper tùy chỉnh? – Aamirkhan