私は ListFragment を使用して onListItemClick を実行しています。すべて正常に動作しますが、今は長いアイテム クリックを使用したいと考えています (例: setOnItemLongClickListener(new OnItemLongClickListener() for an Activity))。フラグメントでこれを使用するにはどうすればよいですか?
ありがとう!
私は ListFragment を使用して onListItemClick を実行しています。すべて正常に動作しますが、今は長いアイテム クリックを使用したいと考えています (例: setOnItemLongClickListener(new OnItemLongClickListener() for an Activity))。フラグメントでこれを使用するにはどうすればよいですか?
ありがとう!
はい、tsync によって投稿されたソリューションは私にとってはうまくいきます。私も同じ問題に遭遇し、これは不可能だと考えました。上記の提案を次のように試しました。
public class ProjectsFragment extends ListFragment {
@Override
public void onActivityCreated(Bundle savedState) {
super.onActivityCreated(savedState);
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(getActivity(), "On long click listener", Toast.LENGTH_LONG).show();
return true;
}
});
そしてそれはうまくいきました!
実現したい内容に応じて、コンテキスト メニューに特定のメソッドを使用できます。
まず、長押しされる View クラスを登録します (Fragment クラス内):
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
registerForContextMenu(this.getListView());
}
これら 2 つのメソッドを実装して、コンテキスト メニューを作成し、メニュー項目がクリックされたときに必要なことを行います。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = this.getActivity().getMenuInflater();
inflater.inflate(R.menu.my_context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.add: // <-- your custom menu item id here
// do something here
return true;
default:
return super.onContextItemSelected(item);
}
}
これは私のために働く
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) {
//Get your item here with the position
return true;
}
});