2017-04-19 10 views
1

は私のコードです。私は左右にスワイプすることができます。しかし、問題は一度私は左または右にスワイプ私は再び最初の状態に戻るために右または左にスワイプすることはできません。たとえば、最初にテキストビューのリストが表示され、次に左にスワイプすると1つのアイコンが表示され、テキストビューは消えてしまいます。今すぐテキストビューを取得するには右にスワイプする必要があります。どうやってやるの?アンドロイドでスワイプした後に最初の状態にスワイプする方法はありますか?

public class MainActivity extends AppCompatActivity { 
     private ArrayList countries = new ArrayList<>(); 
     private DataAdapter adapter; 
     private RecyclerView recyclerView; 
     private AlertDialog.Builder alertDialog; 
     private EditText et_country; 
     private int edit_position; 
     private View view; 
     private boolean add = false; 
     private Paint p = new Paint(); 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      initViews(); 
     } 

     private void initViews(){ 
      recyclerView = (RecyclerView)findViewById(R.id.card_recycler_view); 
      recyclerView.setHasFixedSize(true); 
      RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); 
      recyclerView.setLayoutManager(layoutManager); 
      adapter = new DataAdapter(countries); 
      recyclerView.setAdapter(adapter); 
      initSwipe(); 

     } 
     private void initSwipe(){ 
      final ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) { 

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

        return true; 
       } 

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

        int position = viewHolder.getAdapterPosition(); 
        if(direction == ItemTouchHelper.RIGHT) { 
         Toast.makeText(MainActivity.this, "right", Toast.LENGTH_SHORT).show(); 
        } else { 
         Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show(); 
        } 
       } 

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

        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) { 
          p.setColor(Color.parseColor("#FF0000")); 
          RectF background = new RectF((float) itemView.getRight() + dX, (float) itemView.getTop(),(float) itemView.getRight(), (float) itemView.getBottom()); 
          c.drawRect(background,p); 
          icon = BitmapFactory.decodeResource(getResources(), R.drawable.selectedicon); 
          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,p); 

         } else { 
         p.setColor(Color.parseColor("#D32F2F")); 
          RectF background = new RectF((float) itemView.getRight() + dX, (float) itemView.getTop(),(float) itemView.getRight(), (float) itemView.getBottom()); 
          c.drawRect(background,p); 
          icon = BitmapFactory.decodeResource(getResources(), R.drawable.selectedicon); 
          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,p); 

         } 
        } 
        super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); 
       } 
      }; 

      ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback); 
      itemTouchHelper.attachToRecyclerView(recyclerView); 


     } 


    } 

答えて

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

         return true; 
        } 

    change it to return false 

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

         return false; 
        } 
+1

まだ同じです。 –

+0

私はコードを使いましたが、 "国"でデータを提供していません adapter = new DataAdapter(countries); コードを詳細に投稿できますか? –

+0

それは大丈夫です。私は答えを持っている。 –

1
if(dX < 0) { 
          p.setColor(Color.parseColor("#FF0000")); 
          RectF background = new RectF((float) itemView.getRight() + dX, (float) itemView.getTop(),(float) itemView.getRight(), (float) itemView.getBottom()); 
          c.drawRect(background,p); 
          icon = BitmapFactory.decodeResource(getResources(), R.drawable.selectedicon); 
          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,p); 
          dX = 0; 

         } 

上記のコードを放置し、その後戻って初期状態に取得する権利をスワイプスワイプして適用されます。

関連する問題