android - 当在项目上激活触摸监听器时单击不起作用

标签 android listview ontouchlistener

我有一个实现 OnItemClickListenerOnItemLongClickListener 并显示 ListView 的 Activity 。我在我的列表适配器类中添加了一个 OnTouchListener 以便用户可以在 ListView 项上滑动。但是当我运行我的应用程序时, ListView 项目上的滑动有效,但 onItemClickonItemLongClick 不再有效。但是,如果我从适配器中删除 OnTouchListener,则 itemclick 和 itemlongclick 会起作用。

这是我的代码

我的 Activity

public class InterActivity extends Activity implements 
OnItemClickListener, OnItemLongClickListener
{

    ListView listview;
    List<ParseObject> ob;
    AlertDialog dialog;
    ProgressDialog mProgressDialog;
    FinalAdapter adapter;
    TestAdapter tstapter;
     List<CodeList> codelist = null;
     SharedPreference shrdPreference;

     private int limit = 15;

     GestureDetectorCompat mDetector;
    View footerView;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inter_layout);
        shrdPreference = new SharedPreference();

        //Execute RemoteDataTask AsyncTask

        new RemoteDataTask().execute();
    }

    private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
        //my remote data task to perform async task//
    }

    @Override
    public void onItemClick(AdapterView<?> p1, View view, int position, long p4)
    {
        intent.putExtra("codetext",
                                    (codelist.get(position).getFinalCodeText()));
                    // Start SingleItemView Class
                     startActivity(intent);
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View view, int position, long arg3)
    {
        //my method to perform when item is long pressed
    }

    @Override
    protected void onResume()
    {
        super.onResume();
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
    }

}

我的列表适配器的 getview()

@Override
public View getView(final int position, View view, ViewGroup parent)
{
    final ViewHolder holder;
    if(view == null){
        holder = new ViewHolder();
        view = inflater.inflate(R.layout.listitem,null);
        holder.contaainer = (RelativeLayout) view.findViewById(R.id.container);
        holder.listHeading = (TextView) view.findViewById(R.id.beg_list_itemTextView);

        holder.listHash = (TextView) view.findViewById(R.id.listview_hashtags);
        holder.alphabetList = (ImageView) view.findViewById(R.id.beg_list_itemImageView);

        holder.favariteImage = (ImageView) view.findViewById(R.id.favbtn);
        holder.mDetector = new GestureDetectorCompat(context, new MyGestureListener(context, view));
        view.setTag(holder);

    }else{
        holder = (ViewHolder) view.getTag();
    }
    CodeList codes = (CodeList) getItem(position);
    holder.listHeading.setText(codeList.get(position).getListHeading());
    holder.listHash.setText(codeList.get(position).getListHashText());
    imageLoader.DisplayImage(codeList.get(position).getAlphabetimg(),
                             holder.alphabetList);

    holder.contaainer.setOnTouchListener(new OnTouchListener(){

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                holder.mDetector.onTouchEvent(event);
                return true;
            }
    });

    return view;
}

最佳答案

当您设置自定义 OnTouchListener 时,您将拦截触摸事件,从而覆盖处理正常点击事件的默认触摸处理程序。

如果您想允许默认的点击事件,您必须在您的onTouch() 实现中返回false,让事件传递给默认处理程序。

holder.contaainer.setOnTouchListener(new OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        holder.mDetector.onTouchEvent(event);
        return false;
    }
});

关于android - 当在项目上激活触摸监听器时单击不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34694607/

相关文章:

android - 嵌套 ScrollView 无法使类膨胀

android - 如何在触摸屏幕时使圆圈变大(Android)?

android - RadioGroup 对象不向 Activity 发送 Touch

android - 从 fragment 中的 onLongClick 触发对话框中的 onTouch

java - Android ListView 未更新

android - 添加firebase_messaging插件后,Gradle构建失败

java - 从 android 上传图像到 php web 服务器不起作用

android - 如何使用按钮实现自定义 ListView 行?

android - listView 复选框滚动错误

c# - 如何将不同的CSS类应用到asp :panels in different ItemTemplate?