有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java onItemLongClick未定义?

我试图在我的listview项目中实现长时间单击,但它不起作用,我得到一个错误,它说是undefined。代码如下:

protected void setOnItemLongClickListener(ListView l, View v, int position, long id) {
        super.onItemLongClick(l, v, position, id);// Error

        ApplicationInfo app = applist.get(position);
        try {
            Intent intent = packageManager
                    .getLaunchIntentForPackage(app.packageName);

            if (null != intent) {
                startActivity(intent);
            }
            } catch (ActivityNotFoundException e) {
                Toast.makeText(MainActivity.this, e.getMessage(),
                        Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                Toast.makeText(MainActivity.this, e.getMessage(),
                        Toast.LENGTH_LONG).show();
            }

    }

有人知道如何解决这个问题吗?谢谢


共 (5) 个答案

  1. # 1 楼答案

    使用此代码

    yourListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    
                //YOUR_CODE_HERE
    
                return false;
            }
        });
    
  2. # 2 楼答案

    原因很可能是您没有implement侦听器。差不多

    public class ActivityName extends Activity implements OnItemLongClickListener{
    

    试着改变

    protected void setOnItemLongClickListener
    

    protected boolean setOnItemLongClickListener{
          // your code
          return true;
    

    您需要为方法使用适当的返回类型,即boolean然后return true,以便侦听器知道这是成功的

    Docs

  3. # 3 楼答案

    请尝试Listview的此侦听器:

    istView.setOnItemLongClickListener(new OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                Toast.makeText(arg0.getContext(), ((TextView)arg1).getText(), Toast.LENGTH_SHORT).show();
                return false;
            }
        });
    
  4. # 4 楼答案

    请更换

    public class MainActivity extends Activity  implements OnItemLongClickListener
    

    并添加未实现的方法

    @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            return false;
        }
    

    默认情况下,您可以通过右键单击OnItemLongClickListener选择快速修复来执行此操作

  5. # 5 楼答案

    尝试将此行添加到列表适配器

            view.setOnLongClickListener(new View.OnLongClickListener() {
    
                @Override
                public boolean onLongClick(View v) {
                    return false;
                }
            });
    

    方法是尝试覆盖您的方法

    @Override
    public boolean onItemLongClick(
            AdapterView<?> parent, View view,
            int position, long id) {
        // TODO Auto-generated method stub
        return false;
    }