如何从SimpleCursorAdapter获取信息到ContextMenu

时间:2011-09-16 12:48:53

标签: android database contextmenu simplecursoradapter

我对Android很陌生,我有一个小问题。 我的ContextMenu出了问题。我已经用我的数据库条目填充了我的ListView,现在我的魔杖如果我长按它,则会弹出ContextMenu并且我想要删除或编辑我的数据库条目: 但我不明白我怎么能知道它是什么。

这是我的代码..

    package de.retowaelchli.filterit.stats;




    import de.retowaelchli.filterit.R;
    import de.retowaelchli.filterit.database.ADFilterDBAdapter;
    import android.app.ListActivity;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.view.ContextMenu;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.SimpleCursorAdapter;

    public class CreatedADFilters extends ListActivity {

        //Variablen deklaration
        private ADFilterDBAdapter mDbHelper;

        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);

            //Kontext-Menu registrieren
            registerForContextMenu(findViewById(R.layout.list_layout));

            //Hier wir die Datenbank aufgerufen
            mDbHelper = new ADFilterDBAdapter(this);
            mDbHelper.open();
            fillData();

        }

       private void fillData() {

            // Get all of the notes from the database and create the item list
            Cursor c = mDbHelper.getAllADFilter();
            startManagingCursor(c);

            String[] from = new String[] { ADFilterDBAdapter.NAME, ADFilterDBAdapter.ROW_ID };
            int[] to = new int[] { R.id.label };

            // Now create an array adapter and set it to display using our row
           SimpleCursorAdapter adname =
              new SimpleCursorAdapter(this, R.layout.list_layout, c, from, to);
           setListAdapter(adname);

           mDbHelper.close();
       }


       //ContextMenu erstellen und definieren
      public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
           if (v.getId() == R.layout.list_layout) {
               getMenuInflater().inflate(R.menu.createdadmenu, menu);
           }
           super.onCreateContextMenu(menu, v, menuInfo);
       }

       public boolean onContextItemSelected(MenuItem item) {

           final AdapterView.AdapterContextMenuInfo info = 
                   (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

           switch (item.getItemId()) {
               case R.id.delete_adfilter: {
                   deleteAD();
                   return true;
               }
               case R.id.edit_adfilter:{
                   editAD();
                   return true;
           }
           return super.onContextItemSelected(item);
       }
      }

// THIS IS THE PART I DONT KNOW HOW TO REALIZE
       private void deleteAD(){
       }

       private void editAD(){
       }
    }

Thx for you提前帮助!

最好的问候

狩猎

1 个答案:

答案 0 :(得分:1)

info中的onContextItemSelected()本地变量有一个id数据成员,其中包含_ID中的Cursor值。 Here is a sample project演示了如何使用它根据ListView上下文菜单删除项目。