1

我附上了simpleItemTouchCallbackrecyclerView,用于在列表中滑动项目。android onclick for recyclerview中的滑动布局

   @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 
       } 
});