android - 当我单击另一个活动中的图像按钮时,获取 recyclerview 项目的位置
问题描述
我会尽量说清楚:
我有一个带有 recyclerview 的应用程序,当用户点击一个 recyclerview 项目时,他会打开一个新活动,直接开始播放视频。
在这个新活动(包含视频视图的活动)中,我插入了三个图像按钮,以允许用户在观看视频时分享、喜欢或下载视频。
我的问题是如何定义每个 imagebutton 的侦听器,以便对选定的 recyclerview 项目执行精确的操作。
所以我希望用户下载他正在看的视频,即与所选项目相对应的视频。
这是我的 recyclerview 适配器:
public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private LayoutInflater inflater;
private List<Data> data= Collections.emptyList();
Data current;
private EditText editText;
private String GetName;
private int currentPos=0;
// create constructor to innitilize context and data sent from MainActivity
public Adapter(Context context, List<Data> data){
this.context=context;
inflater= LayoutInflater.from(context);
this.data=data;
}
// Inflate the layout when viewholder created
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=inflater.inflate(R.layout.container, parent,false);
MyHolder holder=new MyHolder(view);
return holder;
}
// Bind data
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
// Obtenir la position actuelle de l'élément dans recyclerview pour lier les données et affecter des valeurs à partir de la liste
MyHolder myHolder= (MyHolder) holder;
Data current = data.get(position);
myHolder.textFishName.setText(current.catName);
myHolder.textSize.setText(current.sizeName);
myHolder.textSize.setVisibility(View.GONE);
myHolder.textType.setText(current.fishName);
myHolder.textPrice.setText("" + current.price + "");
myHolder.textPrice.setVisibility(View.GONE);
myHolder.textPrice.setTextColor(ContextCompat.getColor(context, R.color.colorAccent));
// load image into imageview using glide
Glide.with(context).load("http://192.168.43.196/vibe2/images/" + current.fishImage)
.placeholder(R.drawable.ic_menu_camera)
.error(R.drawable.ic_menu_camera)
.into(myHolder.ivFish);
}
// return total item from List
@Override
public int getItemCount() {
return data.size();
}
class MyHolder extends RecyclerView.ViewHolder {
TextView textFishName;
ImageView ivFish;
TextView textSize;
TextView textType;
TextView textPrice;
TextView counter;
TextView id;
ImageButton imageButton;
// create constructor to get widget reference
public MyHolder(View itemView) {
super(itemView);
editText = itemView.findViewById(R.id.editText);
textFishName = itemView.findViewById(R.id.textFishName);
ivFish = itemView.findViewById(R.id.ivFish);
textSize = itemView.findViewById(R.id.textSize);
textType = itemView.findViewById(R.id.textType);
textPrice = itemView.findViewById(R.id.textPrice);
counter = itemView.findViewById(R.id.counter);
}
}
}
我的回收站视图:
RecycleClick.addTo(recyclerView).setOnItemClickListener(new RecycleClick.OnItemClickListener() {
@Override
public void onItemClicked(RecyclerView recyclerView, int position, View v) {
Intent intent = new Intent(MainActivity.this, PlayVideo.class);
intent.putExtra("url", data.get(position).sizeName);
intent.putExtra("name", data.get(position).fishName);
intent.putExtra("titre", data.get(position).catName);
startActivity(intent);
overridePendingTransition(R.anim.activity_back_in, R.anim.activity_back_out);
finish();
}
});
这是我在第二个活动中获得和使用该职位的方法,但它似乎不起作用。无论我点击什么元素,条件都不正确。
final int position = getIntent().getIntExtra("a",-1);
sparkButton1.setEventListener(new SparkEventListener(){
@Override
public void onEvent(ImageView button, boolean buttonState) {
if (position == 0) {
Toast.makeText(PlayVideo.this, "welcome", Toast.LENGTH_LONG).show();
}else if (position ==1){
Toast.makeText(PlayVideo.this, "exit", Toast.LENGTH_LONG).show();
}
}
解决方案
如果您的列表项包含喜欢、下载或分享视频的信息,例如,唯一的id
或url
下载视频的信息,那么只需将该项目传递给第二个活动intent
并在那里执行这些任务。
如果您真的想获得对上一个活动的回调,对于您的 imageButtons click 您可以使用BroadcastReceiver
.
更新,在你最后一次编辑之后你
没有用键“a”发送任何你的意图。因此你没有得到任何东西。
推荐阅读
- imagemagick - 是否可以在 Windows 上从 PHP 7 运行 ImageMagick 版本 PORTABLE?
- spring-boot - Spring StandardWebsocketClient 可以连接到 Spring boot RSocket Server 吗?
- c++ - (C/C++) fscanf_s Missing Integer Arguments error when reading in Chars to Array from txt file
- c - 链表有困难
- javascript - 将状态从一个组件传递到另一个组件
- javascript - 如何使用箭头函数编写此回调代码?
- python - 有没有办法检查字典是否有一个键,如果该键的值不是 None 一次?
- node.js - 将文件读取流传递给 Node.js 中的 readline.createInterface 时读取整个文件
- c# - 如何在 C# 中为 RichTextBox 创建“行号条”?
- javascript - 如何在 Array.map 中调用异步函数 (XMLHttpRequest) 并等待函数完成?