1

Ich folgte diesem Tutorial (http://www.startingandroid.com/how-to-use-sqlite-database-in-android/), da ich relativ neu in Android-Entwicklung bin und wollte eine Vorstellung davon bekommen, wie SQL funktioniert. Da ich CardView und RecyclerView für eine Anwendung verwenden möchte, die ich gerade entwickle, war dieses Tutorial sehr hilfreich, um mich zu starten.Android Contextual Action Bar - Get RecyclerView Position

Ich bin jedoch noch weiter gegangen und habe die 'Contextual Action Bar' implementiert, um ausgewählte Elemente 'Favoriten' oder 'Löschen' zu markieren (mein Code dafür ist unten zu sehen). Meine Frage ist also, wie kann ich die Position des ausgewählten Elements abrufen und daraus die SQL ID extrahieren und wie würde ich Multi-Select mit der CAB integrieren?

@Override 
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.user_row, parent, false); 
UserViewHolder userViewHolder = new UserViewHolder(v); 

v.setClickable(true); 

v.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Snackbar.make(v, "CLICK", Snackbar.LENGTH_SHORT).show(); 
    } 
}); 

v.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     Snackbar.make(v, "LONG CLICK", Snackbar.LENGTH_SHORT).show(); 
     if (mActionMode != null) { 
      return false; 
     } 
     v.startActionMode(new ActionMode.Callback() { 
      @Override 
      public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
       MenuInflater inflater = mode.getMenuInflater(); 
       inflater.inflate(R.menu.context, menu); 
       return true; 
      } 

      @Override 
      public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
       return false; 
      } 

      @Override 
      public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
       //get number of selected items 

       switch (item.getItemId()) { 
        case R.id.context_favourite: 
         //SQL - Favourite Item 
         mode.finish(); 
        case R.id.context_delete: 
         //SQL - Delete Item 
         mode.finish(); 
       } 
       return false; 
      } 

      @Override 
      public void onDestroyActionMode(ActionMode mode) { 
       mActionMode = null; 
      } 
     }); 
     return true; 
    } 
}); 
return userViewHolder; 
} 

Antwort

0

Ich hatte das gleiche Problem, endete das Speichern der ID aus dem Cursor im Sucher. Tun Sie dies in Ihrem createviewholder func

Verwandte Themen