【问题标题】:When calling onItemLongClickListener,onItemClickListener also called even though I returning true in onItemLongClick调用 onItemLongClickListener 时,即使我在 onItemLongClick 中返回 true,也会调用 onItemClickListener
【发布时间】:2018-08-29 05:24:42
【问题描述】:

onItemLongClick 被调用时,我不想调用onItemClick。 我正在使用SlideAndDragListView 并仅在onItemLongClick 中返回true。

matchedUsersListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
            InviteMatchedUsersFragment.this.onItemLongClick(parent,view,position,id);
            return true;
        }
    });

 @Override
    public void onItemLongClick(AdapterView<?> parent, View view, int position, long id) {  
        ImageView view1 = (ImageView) view.findViewById(position);
        matchedPassengersAdapter.onUserClick(view1, position);
    } 

OnItemClick我做的不一样

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Log.d(LOG_TAG, "onMatchedUserSelection()");
    if(matchedPassengersAdapter.getSelectedPassengersCount() != 0)
    {
        ImageView view1 = (ImageView) view.findViewById(position);
        matchedPassengersAdapter.onUserClick(view1, position);
    }
    else {
          //onItemClickGoesHere
    }

}

@Override
    public void onItemLongClick(AdapterView<?> parent, View view, int position, long id) {  
        ImageView view1 = (ImageView) view.findViewById(position);
        matchedPassengersAdapter.onUserClick(view1, position);
    }  

【问题讨论】:

  • 发布您的代码。
  • 编辑问题,并在那里发布代码
  • @vedamurthy:您应该始终在原始问题中添加代码,而不是在评论中。我已经添加了。
  • @vedamurthy 你解决了你的问题
  • 没有。没有解决。

标签: android listview listviewitem


【解决方案1】:

这个五月对你有帮助

参考:Set long click listener for listview

您的问题与this one 非常相似,但看起来并不完全相同。

您注意到ListActivity 类没有专门针对这种情况的方法覆盖。

为了将此功能添加为方法覆盖,您的类应实现 AdapterView.OnItemLongClickListener 接口,然后您可以添加 onItemLongClick() 方法覆盖,它就像您已经拥有的 onListItemClick() 方法覆盖一样,但响应长按。

只要确保你遵循this answer的指示,你必须在布局xml中使用android:longClickable="true",或者调用listview.setLongClickable(true);

public class MainActivity extends ListActivity implements AdapterView.OnItemLongClickListener {

    ListView listview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView listview = (ListView) findViewById(R.id.list);

        listview.setLongClickable(true);

    }

    @Override
    public boolean onItemLongClick(AdapterView<?> l, View v,
                                   final int position, long id) {

        Toast.makeText(this, "long clicked pos: " + position, Toast.LENGTH_LONG).show();

        return true;
    }

    protected void onListItemClick(ListView l, View v, final int position, long id) {
        super.onListItemClick(l, v, position, id);

        Toast.makeText(this, "short clicked pos: " + position, Toast.LENGTH_LONG).show();  

    }

 //....................

【讨论】:

  • 我有 onItemClick 和 onItemLongClick。不是长按。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多