在recycleview时间轴中为每个视图添加drawable

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在recycleview时间轴中为每个视图添加drawable相关的知识,希望对你有一定的参考价值。

我正在创建一个逐帧动画应用程序。在主绘图屏幕上,我在屏幕底部有一个recyclerview时间轴,用于保存每个画布图。当用户完成绘图并想要创建新帧时,应更新时间线视图以在时间线中包含该特定绘图的图像。

我正在将每个位图转换为可绘制对象,然后将其存储在具有正确位置的hashmap中。

我得到的错误是每个视图是用户绘制的第一帧。

drawing screen with timeline at bottom

这是我主要活动中的方法

//setting up the hashmap of drawable objects
public static Map<Integer, Drawable> drawables = new HashMap<>();

public void onItemClick(View view, int position) {

    // this sets the bitmap to the drawing on screen
    this.canvasView.setDrawingCacheEnabled(true);
    bitmap = this.canvasView.getDrawingCache();

    // this is just to reset the adapterPosition so the else statement gets called in onBindViewHolder
    adapterPosition = position;

   // convert bitmap to drawable then places into right position in hashmap
    myDrawable = new BitmapDrawable(getResources(), bitmap);
    drawables.put(this.pos,myDrawable); 

    // change the position value to the position of the recyclerview item clicked
    this.pos = position

    //call onBindViewHolder to update the recylerview
    adapter.notifyDataSetChanged();

这是我的onBindViewHolder方法

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    Integer res = mFrames.get(position);

    //if statement only happens on first frame so set the image as default image
    if (adapterPosition == 20) {
        holder.myView.setBackgroundResource(res);
    }
    else{
        //get the drawable for the each position of the recyclerview using hashmap
        holder.myView.setBackground(drawables.get(position));
    }

调用onBindView时,视图应为hashmap drawable中的每个位置获取不同的图像,但每次返回图像的位置都在第一个位置

答案

这是我在你的代码中看到的:

  1. 你目前在adapterPosition设置onItemClick()的方法是错误的。你应该只使用position中提供的onBindViewHolder()
  2. drawables地图不应该是静态的。

这些可能无法立即解决您的问题,但步骤正确。显示更多代码也有帮助,例如如何将帧添加到mFrames,谁调用onItemClick()等。

以上是关于在recycleview时间轴中为每个视图添加drawable的主要内容,如果未能解决你的问题,请参考以下文章

php 事件日历PRO:在单一地点的列表视图中为每个事件添加JSON-LD标记。

php 事件日历PRO:在单一地点的列表视图中为每个事件添加JSON-LD标记。

在 UIScrollview 中为 UIButton 添加 UIPangesture 以在所有视图上移动

在选项卡式应用程序的导航视图中为表格添加背景图像

drupal - 如何在视图模块中为每种网格格式添加自定义 CSS?

javascript TimelineLite在时间轴中的特定时间添加补间