具有唯一ID的动态视图无效,以及如何在onSeekListener

时间:2018-03-18 16:11:44

标签: android

在此处输入代码>这里在onClick am创建一个包含一些子视图的动态视图(New cutLayout)。 >

  

1) 工作:设置随机生成的ID(cutlayout ID)。

     

2) 工作:设置onTouchListener(cutlayout拖动)。

     

3) 问题:为每个(cutlayout)设置onSeekListener,它的工作,但仅适用于最近创建的cutlayout。 (即点击4次我创建了4个cutLayouts,现在onSeekListener仅适用于最近创建的第4个cutlayout)

     

我正在尝试这样做:当我触摸(第1或第2或第50个cutlayout)时,onSeekListener应仅适用于相关的cutlayout。

     

getId只存储一个最近创建的ID。有人请帮忙。

    public class SelectedImageAdapter2 extends RecyclerView.Adapter<SelectedImageHolder2>
{
    public ArrayList<SelectedImageModel2> selectedImageModels2;
    FrameoEdit context;
    LayoutInflater li;
    int resource;
    RelativeLayout rL;
    Bitmap bt;

    public SelectedImageAdapter2(ArrayList<SelectedImageModel2> selectedImageModels2, FrameoEdit context, int resource) {
        this.selectedImageModels2 = selectedImageModels2;
        this.context = context;
        this.resource = resource;
        li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        rL = (RelativeLayout) context.findViewById(R.id.rL);
    }

    @Override
    public SelectedImageHolder2 onCreateViewHolder(ViewGroup parent, int viewType) {
        View layout = li.inflate(resource,parent,false);
        SelectedImageHolder2 slh = new SelectedImageHolder2(layout);

        return slh;
    }

    @Override
    public void onBindViewHolder(final SelectedImageHolder2 holder, final int position)
    {
        Picasso.with(context)
                .load(selectedImageModels2.get(position).getImage_uri())
                .placeholder(R.drawable.ic_launcher)
                .into(holder.user_img);

        holder.setItemClickListener(new SelectedImageItemClickListener2()
        {
            @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
            @Override
            public void onItemClick(View v, final int pos)
            {
                selectedURI1 = Uri.parse(selectedImageModels2.get(position).getImage_uri());

                int gen_id = 0;
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
                    gen_id = View.generateViewId();
                }

                DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics();
                int screen_width = displayMetrics.widthPixels;
                RelativeLayout.LayoutParams paramsRL = new RelativeLayout.LayoutParams(screen_width, screen_width);


                    cutLayout = new CutLayout(context);
                    imgV = new ImageView(context);
                    imgV.setImageURI(selectedURI1);
                    cutLayout.addView(imgV);
                    cutLayout.setBackgroundColor(Color.RED);

                    final int gen_iddd = gen_id;

                    cutLayout.setId(gen_iddd);
                    cutLayout.setLayoutParams(paramsRL);
                    imgV.setLayoutParams(paramsRL);


                scale_seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
                {
                    @Override
                    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
                    {
                        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(progress, progress);
                        imgV.setLayoutParams(layoutParams);
                        cutLayout.setLayoutParams(layoutParams);
                    }

                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {
                    }

                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                    }
                });




                    cutLayout.setOnTouchListener(new View.OnTouchListener() {
                        @Override
                        public boolean onTouch(View view, MotionEvent motionEvent) {
                            float newX, newY;
                            cutLayout.bringToFront();

                            switch (motionEvent.getActionMasked()) {
                                case MotionEvent.ACTION_DOWN:

                                    cutLayout.bringToFront();
                                    dX = view.getX() - motionEvent.getRawX();
                                    dY = view.getY() - motionEvent.getRawY();
                                    lastAction = MotionEvent.ACTION_DOWN;
                                    break;

                                case MotionEvent.ACTION_MOVE:

                                    newX = motionEvent.getRawX() + dX;
                                    newY = motionEvent.getRawY() + dY;

                                    view.setX(newX);
                                    view.setY(newY);

                                    lastAction = MotionEvent.ACTION_MOVE;

                                    break;

                                case MotionEvent.ACTION_UP:
                                    if (lastAction == MotionEvent.ACTION_DOWN)
                                        break;

                                default:
                                    return false;
                            }

                            return true;
                        }
                    });
                    rL.addView(cutLayout);
            }
        });


    }

    @Override
    public int getItemCount() {
        return this.selectedImageModels2.size();
    }

}

0 个答案:

没有答案