1

リスト内の項目をスワイプするには、simpleItemTouchCallbackrecyclerViewを添付しました。recyclerviewのスワイプレイアウト用のAndroid onclick

   @Override 
       public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { 
        if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) { 
         View itemView = viewHolder.itemView; 
         float height = (float) itemView.getBottom() - (float) itemView.getTop(); 
         float width = height/3; 
         if (dX/3 > 0) { 
          RectF rect = new RectF((float) itemView.getLeft(), (float) itemView.getTop(), dX/3, (float) itemView.getBottom()); 
          LayoutInflater li = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
          View v = li.inflate(R.layout.complete_layout, null); 
          v.measure(View.MeasureSpec.getSize(v.getMeasuredWidth()), View.MeasureSpec.getSize(v.getMeasuredHeight())); 
          v.layout(0, 0, Math.round(rect.width()), Math.round(rect.height())); 
          c.save(); 
          c.translate(rect.left, rect.top); 
          v.draw(c); 
         } else { 
          RectF rect1 = new RectF((float) itemView.getRight() + dX/3, (float) itemView.getTop(), (float) itemView.getRight(), (float) itemView.getBottom()); 
          LayoutInflater li1 = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
          View v = li1.inflate(R.layout.delete_layout, null); 
          v.measure(View.MeasureSpec.getSize(v.getMeasuredWidth()), View.MeasureSpec.getSize(v.getMeasuredHeight())); 
          v.layout(0, 0, Math.round(rect1.width()), Math.round(rect1.height())); 
          c.save(); 
          c.translate(rect1.left, rect1.top); 
          v.draw(c); 
         } 
         c.restore(); 
        } 
super.onChildDraw(c, recyclerView, viewHolder, dX/3, dY, actionState, isCurrentlyActive); 

新しいレイアウトをスワイプして描画することが適切に機能しています。新しいレイアウトにOnClickListenerを追加します。私はそうする方法を見つけることができませんでした。

答えて

0
recyclerView.addOnItemTouchListener(
    new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() { 
    @Override 
    public void onItemClick(View view, int position) { 
     //Magic happens here 
    } 
} 

はところで:私はあなたが^^

0

このべき仕事を掲載メソッド内で何をしているかわかりません。しかし、私のコードでは、ビューはクリック可能ではありません。多分それはあなたのために働いています。

RectF rect1 = new RectF((float) itemView.getRight() + dX/3, (float) itemView.getTop(), (float) itemView.getRight(), (float) itemView.getBottom()); 
LayoutInflater li1 = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View v = li1.inflate(R.layout.delete_layout, null); 
v.measure(View.MeasureSpec.getSize(v.getMeasuredWidth()), View.MeasureSpec.getSize(v.getMeasuredHeight())); 
v.layout(0, 0, Math.round(rect1.width()), Math.round(rect1.height())); 
c.save(); 
c.translate(rect1.left, rect1.top); 

v.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // implement here your code for the click 
       } 
}); 
関連する問題