web-dev-qa-db-ja.com

ListFragmentを長押し

私はListFragmentを操作して、onListItemClickを実行しています。すべてが正常に動作しますが、長いアイテムクリック(たとえば、アクティビティのsetOnItemLongClickListener(new OnItemLongClickListener())を使用したいと思います。これをフラグメントでどのように使用できますか?

ありがとう!

34
tsync

はい、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;
        }
    });

そしてそれはうまくいった!

59
Narayanan

実現したいものに応じて、コンテキストメニューに指定されたメソッドを使用できます。

まず、長押しされる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);
    }
}
13
Matthias B

これは私のために働く

getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) {
        //Get your item here with the position                   
        return true;
    }
});
11
NathofGod