gpt4 book ai didi

java - 我的 Recycler View 的 Adapter 类中的 OnTouch 和 onClick 事件出现问题

转载 作者:行者123 更新时间:2023-12-01 18:51:13 26 4
gpt4 key购买 nike

我正在开发我的应用程序。在我的应用程序的主屏幕中,我有一个 Horizo​​ntal RecyclerView,它从 Firebase 加载图像和图像下方的名称。当用户单击图像时,我想将用户发送到另一个 Activity ,并且我也想突出显示该图像。

我的问题是我在 Adapter 类中使用了 OnTouch 方法来突出显示图像,但是当我这样做时,它仅在单击时突出显示图像。我想将用户发送到另一个 Activity ,并且我还想突出显示该图像。因此,为此,我在代码中使用了 intent 。但是,当我在代码中使用 Intent 时,它成功地将用户发送到另一个 Activity ,但问题是在转到另一个 Activity 后,当用户单击返回时,图像仍然突出显示。

所以结论是我的代码出现问题,我希望当用户单击图像时它会突出显示图像并将用户发送到新的 Activity 而没有任何错误。

这是我的代码:-

public class TrendingSongsAdapter extends RecyclerView.Adapter<TrendingSongsAdapter.ViewHolder> {

public static final String TAG = "RecyclerViewAdaper";
// private ArrayList<String> mNames = new ArrayList<>();
// private ArrayList<String> mImageUrls = new ArrayList<>();

private List<Upload> mUploads;

private OnItemListener mOnItemListener;

private Context mContext;

public TrendingSongsAdapter(Context context, List<Upload> uploads, OnItemListener onItemListener) {
// mNames = names ;
// mImageUrls = imageUrls;
mUploads = uploads;
mContext = context;
this.mOnItemListener = onItemListener;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.trending_song_items_view, parent, false);


return new ViewHolder(view, mOnItemListener);
}

@SuppressLint("ClickableViewAccessibility")
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {


Upload uploadCurrent = mUploads.get(position);

holder.name.setText(uploadCurrent.getName());

Glide.with(mContext)
.asBitmap()
.load(uploadCurrent.getImageUri())
.centerCrop()
.into(holder.image);
holder.image.setOnTouchListener(new View.OnTouchListener() {
Rect rect;

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {


if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
holder.image.setColorFilter(Color.argb(50, 0, 0, 0));
rect = new Rect(view.getLeft(), view.getRight(), view.getTop(), view.getBottom());
}
if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
holder.image.setColorFilter(Color.argb(0, 0, 0, 0));
}
if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
if (!rect.contains(view.getLeft() + (int) motionEvent.getX(), view.getTop() + (int) motionEvent.getY())) {
holder.image.setColorFilter(Color.argb(0, 0, 0, 0));
}
}



Intent intent = new Intent(mContext , D.class);
mContext.startActivity(intent);



return false;

}



});


}


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

public interface OnItemListener {

void onItemClick(int position);
}

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

ImageView image;
TextView name;

OnItemListener onItemListener;

public ViewHolder(View itemview, OnItemListener onItemListener) {
super(itemview);

image = itemview.findViewById(R.id.image_view);
name = itemview.findViewById(R.id.name);
this.onItemListener = onItemListener;

itemview.setOnClickListener(this);

}

@Override
public void onClick(View view) {
onItemListener.onItemClick(getAdapterPosition());
}
}

}

如果您有任何解决方案,请帮助我。

感谢您阅读我的问题。

最佳答案

尝试向每个 if 条件添加 else 并重置图像状态,如果您想从中删除突出显示

            if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
holder.image.setColorFilter(Color.argb(50, 0, 0, 0));
rect = new Rect(view.getLeft(), view.getRight(), view.getTop(), view.getBottom());
}
else{ // set here image resource}
if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
holder.image.setColorFilter(Color.argb(0, 0, 0, 0));
}
else{// set here image resource}
if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
if (!rect.contains(view.getLeft() + (int) motionEvent.getX(), view.getTop() + (int) motionEvent.getY())) {
holder.image.setColorFilter(Color.argb(0, 0, 0, 0));
}
else{// set here image resource}
}

关于java - 我的 Recycler View 的 Adapter 类中的 OnTouch 和 onClick 事件出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59735779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com