在此处输入代码>这里在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();
}
}