web-dev-qa-db-ja.com

リストビューのロングクリックリスナーを設定する

私は以下のコードを持っています:

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()に変更する必要がありますが、どうすればよいですか?出来ますか?

10
Matarata

あなたの質問は これ と非常に似ていますが、完全に重複しているわけではないようです。

お気づきのことと思いますが、 ListActivity クラスには、この場合に特化したメソッドオーバーライドがありません。

この機能をメソッドオーバーライドとして追加するには、クラスで_AdapterView.OnItemLongClickListener_インターフェイスを実装する必要があります。次に、onItemLongClick()メソッドと同じように機能するonListItemClick()メソッドオーバーライドを追加できます。すでに持っているものを上書きしますが、長いクリックには反応します。

この回答 の指示に従っていることを確認してください。レイアウト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();  

    }

 //....................
_
6
Daniel Nugent

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;
        }
});
3

これを試して

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

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

             // write your code

            return false;
        }}); 
2
SUNIL GOWROJI

リスナーを実装すると、コールバックはクラスの関数(メソッド)として表示されます。

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;
    }

}
1
Simas