10

我有以下代码:

public class MainActivity extends ListActivity { 
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}   
protected void onListItemClick(ListView l, View v, final int position, long id) {
    super.onListItemClick(l, v, position, id);
}}

我需要将其更改为onListItemLongClick()但如何?可能吗?

4

5 回答 5

6

您的问题与此问题非常相似,但看起来它不是完全重复的。

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

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

只需确保您遵循此答案中的说明,您必须android:longClickable="true"在布局 xml 中使用,或调用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();  

    }

 //....................
于 2015-07-05T07:29:28.173 回答
3

你可以简单地做到这一点setOnItemLongClickListener

listview.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            Toast.makeText(ClassName.class, "Long Clicked Trigger: ", Toast.LENGTH_LONG).show();
            return true;
        }
});
于 2016-06-20T09:53:54.597 回答
2

尝试这个

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        public boolean onItemLongClick(AdapterView<?> arg0, View v,
                int index, long arg3) {

             // write your code

            return false;
        }}); 
于 2015-07-05T06:42:17.523 回答
1

您可以实现侦听器,然后回调将在您的类中显示为函数(方法):

public class MainActivity extends ListActivity implements View.OnLongClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        View listView = findViewById(R.id.list_view);
        listView.setOnLongClickListener(this);
    }

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

    @Override
    public boolean onLongClick(View v) {
        // Do your work here
        return false;
    }

}
于 2015-07-05T06:49:48.067 回答
-1

是的,这是可能的,而且很容易实现,只是你必须让列表视图的实例像

ListView lv = (ListView)findViewById(R.id.listview);
lv.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View 
                    // your code here
                    return true;
                }

        });)

在您的情况下,您可以在 xml 中创建一个列表视图,然后在 MainActivity 中找到该视图,然后按照上述步骤操作,而不是扩展 ListActivity。

于 2015-07-05T07:07:42.650 回答