【问题标题】:Infinite scroll with clickable listView带有可点击 listView 的无限滚动
【发布时间】:2015-01-15 21:13:51
【问题描述】:

我有一个任务 - 创建 ListView 的无限滚动。并且 ListView 元素必须是可点击的(它是一个文章列表,当你点击它时 - 它会完全打开文章)。 目前,如果我尝试处理触摸事件,它会与附加到 ListView 元素的 onClickListener 发生冲突。我怎样才能做到这一点?

这是我的 onClickListener:

        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
        }

        //Set event on list item click
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent myIntent = new Intent(mContext, ShowActivity.class);

                if (mType.equals("news")) {
                    myIntent.putExtra("id", itemsNews.get(mPosition).getId());
                }
                if (mType.equals("author")) {
                    myIntent.putExtra("id", itemsAuthor.get(mPosition).getId());
                }
                if (mType.equals("special")) {
                    myIntent.putExtra("id", itemsSpecial.get(mPosition).getId());
                }
                myIntent.putExtra("type", mType);
                mContext.startActivity(myIntent);
            }
        });

我尝试附加 onScrollListener 但我的 converView 不知道这种方法。任何帮助,将不胜感激!我会添加你想要的任何代码。

【问题讨论】:

  • 冲突是什么意思?
  • @ShivamVerma 如果我尝试将 onTouchListener 附加到我的 convertView 它不会触发 ACTION_UP 事件或 ACTION_CANCEL。似乎它们被 onClickListener 拦截了。所以我无法正确识别滑动=(

标签: android listview infinite-scroll


【解决方案1】:

为列表视图添加 OnItemClickListener 并从那里开始新的活动。

listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick (AdapterView < ? > parent, View view,int position,long id){

            Intent myIntent = new Intent(mContext, ShowActivity.class);

            switch (mType[position]) {
                case "news":
                    myIntent.putExtra("id", itemsNews.get(position).getId());
                    break;
                case "author":
                    myIntent.putExtra("id", itemsAuthor.get(position).getId());
                    break;

                case "special":
                    myIntent.putExtra("id", itemsSpecial.get(position).getId());
                    break;
            }

            myIntent.putExtra("type", mType);
            mContext.startActivity(myIntent);

        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多