私は以下のコードを持っています:
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()に変更する必要がありますが、どうすればよいですか?出来ますか?
あなたの質問は これ と非常に似ていますが、完全に重複しているわけではないようです。
お気づきのことと思いますが、 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();
}
//....................
_
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;
}
});
これを試して
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View v,
int index, long arg3) {
// write your code
return false;
}});
リスナーを実装すると、コールバックはクラスの関数(メソッド)として表示されます。
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;
}
}