membuat menu setelah lelah event klik pada tampilan daftar

Saya memiliki daftar view yang terhubung ke database, menampilkan semua entri. Saya ingin menu yang muncul jika pengguna lama klik sebuah item di listview(database entry), yang menunjukkan pilihan untuk mengedit atau menghapus entri. bagaimana saya bisa melakukan ini.

Sampai sekarang, saya telah mencoba menggunakan onItemLongClick pendengar dan bersulang dalam hal ini yang menunjukkan id dari pandangan lama diklik.

@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
        int position, long id) {

    String res = Long.toString(id);
     Toast toast = Toast.makeText(this, res, Toast.LENGTH_SHORT);
     toast.show();

    return true;
}

Pertama, anda perlu untuk mendaftarkan anda di menu konteks pada tampilan daftar.

lv = (ListView) findViewById(R.id.list_view);
registerForContextMenu(lv);

Kemudian, hanya menimpa kegiatan metode.

/**
 * MENU
 */

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
      super.onCreateContextMenu(menu, v, menuInfo);
      if (v.getId()==R.id.list_view) {
          MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.menu_list, menu);
      }
}

@Override
public boolean onContextItemSelected(MenuItem item) {
      AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
      switch(item.getItemId()) {
         case R.id.add:
         // add stuff here
            return true;
          case R.id.edit:
            // edit stuff here
                return true;
          case R.id.delete:
        // remove stuff here
                return true;
          default:
                return super.onContextItemSelected(item);
      }
}

Berikut adalah contoh dari menu_list.xml file (anda harus menempatkan file pada res/menu folder).

<?xml version="1.0" encoding="utf-8"?>








Berharap ini akan membantu.

Komentar (6)
Larutan

Alih-alih menggunakan onItemLongClick anda dapat menggunakan

public void onCreateContextMenu(final ContextMenu menu, 
                    final View v, final ContextMenuInfo menuInfo) {
 ...
}

di mana anda setup pilihan untuk mengedit dan menghapus atau apa pun yang anda butuhkan untuk.

Tindakan untuk item yang dipilih dari menu konteks dapat diproses di

public boolean onContextItemSelected(final MenuItem item)

Untuk informasi lebih lanjut di menu konteks lihat di sini.

Untuk langkah demi langkah tutorial berkunjung di sini.

Komentar (1)

Pendekatan lain:

//Deleted individual cart items
    //on list view cell long press
    cartItemList.setOnItemLongClickListener (new OnItemLongClickListener() {
          @SuppressWarnings("rawtypes")
        public boolean onItemLongClick(AdapterView parent, View view, final int position, long id) {
              final CharSequence[] items = { "Delete" };

                AlertDialog.Builder builder = new AlertDialog.Builder(context);

                builder.setTitle("Action:");
                builder.setItems(items, new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int item) {
                        cart = cartList.get(position);
                        db.removeProductFromCart(context, cart);

                        new AlertDialog.Builder(context)
                        .setTitle(getString(R.string.success))
                        .setMessage(getString(R.string.item_removed))
                        .setPositiveButton("Done", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) { 
                                Intent intent = new Intent(CartDetailsActivity.this, HomeScreen.class);
                                startActivity(intent);
                            }
                         })
                         .show();

                    }

                });

                AlertDialog alert = builder.create();

                alert.show();
            //do your stuff here
              return false;
          }
        });
Komentar (0)

Anda dapat menghubungi Aktivitas.openOptionsMenu()` pada anda klik item metode

cek di sini http://developer.android.com/reference/android/app/Activity.html#openOptionsMenu%28%29

Komentar (1)

**

setelah mendaftar anda menu konteks pada tampilan daftar

** menimpa onCreateContextMenu Metode seperti ini

@Override
    public void onCreateContextMenu(ContextMenu menu,View v, ContextMenu.ContextMenuInfo menuInfo){
        if (v.getId() == R.id.listView){
            AdapterView.AdapterContextMenuInfo info =(AdapterView.AdapterContextMenuInfo)menuInfo;
            MenuItem mnu1=menu.add(0,0,0,"Delete");
            MenuItem mnu2=menu.add(0,1,1,"Share");
        }
    }

kemudian coding untuk setiap item yang dapat dipilih

 @Override
    public boolean onContextItemSelected(MenuItem menuItem){
        AdapterView.AdapterContextMenuInfo info=(AdapterView.AdapterContextMenuInfo)menuItem.getMenuInfo();
        switch (menuItem.getItemId()) {
            case 0:
                Toast.makeText(this, "Delete Selected", Toast.LENGTH_LONG).show();
                break;
            case 1:
                Toast.makeText(this, "Share Selected", Toast.LENGTH_LONG).show();
                break;

            default:
                break;

        }
        return true;
    }
Komentar (0)

Gunakan registerForContextMenu(); untuk link menu konteks untuk setiap View penerus.

Untuk akses ke beberapa ListItem data sederhana menggunakan AdapterView.AdapterContextMenuInfo. E. g.:

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo menuinfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
    long selectid = menuinfo.id; //_id from database in this case
    int selectpos = menuinfo.position; //position in the adapter
    switch (item.getItemId()) {
    case 1:
        doSomething(selectid);
    break;
    case 2:
        doSomethingElse(selectpos);
    }
    return super.onContextItemSelected(item);
}
Komentar (0)

Sebuah catatan singkat bagi mereka yang masih berjuang, ada're dua metode

registerForContextMenu(list);
unregisterForContextMenu(list);

Pastikan anda memilih yang pertama.

Komentar (0)