2016-10-22 5 views
0

Hallo ich hinzufügen, haben ItemTouchHelper meiner Listview, und ich habe MyItemTouchHelper.attachToRecyclerView (myRecyclerView) tun, dann für i Geräte-Code haben Swipe nach rechts:Individuelle Swipe ItemTouchHelper

private ItemTouchHelper itemTouchHelperEventi = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) { 
    @Override 
    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { 
     return false; 
    } 

    @Override 
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) { 


      Evento ev = lista_eventi.get(viewHolder.getAdapterPosition()); 
      analizzaEvento = new AnalizzaEvento(ev.getNome_evento()); 
      adapterRecyclerViewEventi.remove(positionForResult); 



     adapterRecyclerViewEventi.notifyDataSetChanged(); 
    } 
}); 

Jetzt möchte ich Swipe-Code implementieren, um remove item wie gmail, ich will das, wenn ich nach rechts wische Hintergrundzeile wird rot und auf der linken Seite der Zeile gibt es Label rückgängig machen und rechts von Zeile gibt es Label löschen (oder bestätigen), wenn ich rechts klicke ich lösche Element, wenn ich klicke auf der linken Seite kehren Sie zur vorherigen Situation zurück.

Bitte verknüpfen Sie keine andere Bibliothek Ich möchte dieses Fest in meinem Code hinzufügen, ohne externe Bibliothek zu verwenden, ich möchte nicht den gesamten Code nur für diese Funktion neu schreiben.

Ist es möglich?

+0

ich keine Lösung gefunden Jede Idee kann? – Fra87

Antwort

0

Hier ist Beispielcode

ItemTouchHelper.Callback simpleItemTouchCallback=new ItemTouchHelper.Callback() { 
          @Override 
          public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { 

           //Unlock the movement of the item 
           //If you want only left to right unlock that moment only 

           int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN; 
           int swipeFlags; 
           if(viewHolder instanceof HeterogenousAdapter.ImageViewHolder) 
            swipeFlags = ItemTouchHelper.ANIMATION_TYPE_SWIPE_CANCEL ; 
           else 
            swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END ; 
           return makeMovementFlags(dragFlags, swipeFlags); 
          } 

          @Override 
          public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { 

          } 

          @Override 
          public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { 

           //when user swiped this method getting call 

           int position = viewHolder.getAdapterPosition(); 
           if (direction == ItemTouchHelper.LEFT){ 
            adapter.removeItem(position); 
           }else { 
            removeView(); 
            edit_position = position; 
            alertDialog.setTitle("Edit Country"); 
            if (objectsArrayList.get(position) instanceof UserInfo){ 
             UserInfo userInfo= (UserInfo) objectsArrayList.get(position); 
             et_country.setText(userInfo.getFirstName()); 
            }else { 
             String abc= (String) objectsArrayList.get(position); 
             et_country.setText("ESHVAR"); 
            } 

            alertDialog.show(); 
           } 
          } 

          @Override 
          public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { 

           //when swiped started what you wants to do 
           //Here you can set Red color with icon on it 

           Bitmap icon; 
           if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE){ 
            View itemView = viewHolder.itemView; 
            float height=(float) itemView.getBottom() - (float) itemView.getTop(); 
            float width =height/3; 

            if (dX > 0){ 
             paint.setColor(Color.parseColor("#388e3c")); 
             RectF background = new RectF(
               (float)itemView.getLeft(), 
               (float)itemView.getTop(), 
                dX, 
               (float)itemView.getBottom()); 
               c.drawRect(background,paint); 
             icon = BitmapFactory.decodeResource(getResources(),R.drawable.action_search); 
             RectF icon_dest = new RectF(
                   (float)itemView.getLeft()+width, 
                   itemView.getTop()+width, 
                   (float)itemView.getLeft()+2*width, 
                   (float)itemView.getBottom() - width); 
             c.drawBitmap(icon,null,icon_dest,paint); 
            }else { 
             paint.setColor(Color.parseColor("#d32f2f")); 
             RectF background = new RectF(
               (float)itemView.getRight()+dX, 
               (float)itemView.getTop(), 
               (float)itemView.getRight(), 
               (float)itemView.getBottom()); 
             c.drawRect(background,paint); 
             icon =BitmapFactory.decodeResource(getResources(),R.drawable.action_search); 
             RectF icon_dest=new RectF(
               (float)itemView.getRight()-2*width, 
               (float)itemView.getTop()+width, 
               (float)itemView.getRight() - width, 
               (float)itemView.getBottom() - width); 
             c.drawBitmap(icon,null,icon_dest,paint); 
            } 
           } 
           super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); 
          } 
         }; 


    //Adding Recycle view to Item touch helper 
    ItemTouchHelper itemTouchHelper=new ItemTouchHelper(simpleItemTouchCallback); 
         itemTouchHelper.attachToRecyclerView(recyclerView); 
+0

Ich habe zu implementieren: onChildDraw, während o – Fra87

+0

Ich habe onswipe: empity, während onChildDraw habe ich Ihren Code, ich habe versuchen, Code, aber nachdem ich Swipe-Zeile wie vorher – Fra87

+0

zurück, was Sie vor wie gesagt? –

Verwandte Themen