2015-08-08 2 views
2

J'ai un ListView qui prend les données de la base de données sqlite. Maintenant, je veux définir quand je clique longtemps sur un élément dans la liste, je vais pouvoir supprimer ou mettre à jour l'élément.Action après un long clic sur listview (Android Studio)

J'ai réussi à faire le ContextMenu, mais je ne sais pas comment faire l'action après avoir cliqué sur mettre à jour ou supprimer.

DataListActivity.java - L'activité du listview

public class DataListActivity extends ActionBarActivity { 
    ListView listView; 
    SQLiteDatabase sqLiteDatabase; 
    CourseDbHelper courseDbHelper; 
    Cursor cursor; 
    ListDataAdaptar listDataAdaptar; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.data_list_layout); 
     listView = (ListView) findViewById(R.id.list_view); 
     listDataAdaptar = new ListDataAdaptar(getApplicationContext(),R.layout.row_layout); 
     listView.setAdapter(listDataAdaptar); 
     registerForContextMenu(listView); 
     courseDbHelper = new CourseDbHelper(getApplicationContext()); 
     sqLiteDatabase = courseDbHelper.getReadableDatabase(); 
     cursor = courseDbHelper.getInformation(sqLiteDatabase); 
     registerForContextMenu(listView); 
     if (!cursor.moveToFirst()){ 
     } 
     else { 
      do { 
       String year,semester,course,points,grade; 
       year = cursor.getString(0); 
       semester = cursor.getString(1); 
       course = cursor.getString(2); 
       points = cursor.getString(3); 
       grade = cursor.getString(4); 
       DataProvider dataProvider = new DataProvider(year,semester,course,points,grade); 
       listDataAdaptar.add(dataProvider); 
      } 
      while (cursor.moveToNext()); 
     } 
    } 
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu_data_list, menu); 
    } 

    } 

menu_data_list.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.example.ido.grades.DataListActivity"> 
    <item android:id="@+id/update_item" android:title="@string/update" 
     android:orderInCategory="100" app:showAsAction="never" /> 
    <item android:id="@+id/delete_item" android:title="@string/delete" 
     android:orderInCategory="100" app:showAsAction="never" /> 
</menu> 

pic: http://i.stack.imgur.com/eCUzQ.png

+0

Remplacer la méthode 'onOptionsItemSelected' et vous pouvez supprimer ou mettre à jour l'article de l'adaptateur à l'aide de cas de commutation. Voici le lien: http://developer.android.com/guide/topics/ui/menus.html#RespondingOptionsMenu –

Répondre

1

Merci Vikas, je ajouté cette fonction et ses travaux (au lieu de onOption sItemSelected je l'ai écrit onContextItemSelected):

public boolean onContextItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.update_item: 
       Toast.makeText(this,"update",Toast.LENGTH_LONG).show(); 
       return true; 
      case R.id.delete_item: 
       Toast.makeText(this,"delete",Toast.LENGTH_LONG).show(); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
+1

C'est votre question, il serait juste d'accepter votre réponse alors - vous voyez, vous savez que cela fonctionne; pas vous ;-) – GhostCat