RecyclerView SimpleItemTouchHelper изображение не отображается - PullRequest
0 голосов
/ 23 января 2020

У меня есть перелистываемое изображение переработчика с изображением под ним. Я использую onChildDraw для визуализации этих изображений. Но по какой-то причине изображения вообще не показываются.

public class SimpleItemCallBack extends ItemTouchHelper.SimpleCallback {


       @BindColor(R.color.colorBehindCard)
    int colorBehindCards;

    private Context context;


    private SwipeListener mSwipeListener;

    public SimpleItemCallBack(Context context, SwipeListener swipeListener) {
        super(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);
        this.context = context;
        this.mSwipeListener = swipeListener;
    }

    private Paint p = new Paint();

    @Override
    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
        return false;
    }

    @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
        int position = viewHolder.getAdapterPosition();

        if (direction == ItemTouchHelper.LEFT) {


            mSwipeListener.openDetailSelectedTherapy();
            //todo do something
        } else {

            mSwipeListener.openOrderSummary();
        }
    }

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


        p.setStyle(Paint.Style.FILL_AND_STROKE);
        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 it was a right swipe
            if (dX > 0) {
                p.setColor(colorBehindCards);
                RectF background = new RectF((float) itemView.getLeft(), (float) itemView.getTop(), dX, (float) itemView.getBottom());
                c.clipRect(background);
                c.drawRect(background, p);
                icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.img_quick_booking_);
                RectF icon_dest = new RectF((float) itemView.getLeft() + 50, (float) itemView.getTop() + width, (float) itemView.getLeft() + width + 50, (float) itemView.getBottom() - width);
                c.drawBitmap(icon, null, icon_dest, p);

            } else {
                p.setColor(colorBehindCards);
                RectF background = new RectF((float) itemView.getRight() + dX, (float) itemView.getTop(), (float) itemView.getRight(), (float) itemView.getBottom());
                c.clipRect(background);
                c.drawRect(background, p);

                icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.img_quick_category);

                RectF icon_dest = new RectF((float) itemView.getRight() - width - 50, (float) itemView.getTop() + width, (float) itemView.getRight() - 50, (float) itemView.getBottom() - width);
                c.drawBitmap(icon, null, icon_dest, p);
            }
        }
        c.restore();
        super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
    }
}

Я инициализировал recclerview и настроил экземпляр itemTouchHelper следующим образом ... в моем классе активности ..

SimpleItemCallBack simpleItemCallBack = new SimpleItemCallBack(getContext(), this);


  ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemCallBack);
        itemTouchHelper.attachToRecyclerView(therpayRecyclerView);

У меня нет сбоев. Отображается окно реселлера, но под ним нет изображения, как вы можете видеть у меня в функции SimpleItemCallBack onDraw.

...