Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击imagebutton时获取recyclerview项目的位置_Android_Android Recyclerview_Android Imagebutton - Fatal编程技术网

Android 单击imagebutton时获取recyclerview项目的位置

Android 单击imagebutton时获取recyclerview项目的位置,android,android-recyclerview,android-imagebutton,Android,Android Recyclerview,Android Imagebutton,以下是我用来获取recyclerview项目的位置并执行准确操作的方法: @Override public void onItemClicked(RecyclerView recyclerView, int position, View v) { } 我将imagebutton放入文件中,该文件会使我的recyclerview膨胀,如图所示: “我的图像”按钮位于播放视频的活动中,如图所示。 [![图片] 这是我的适配器: public class Adapter extends Recy

以下是我用来获取recyclerview项目的位置并执行准确操作的方法:

@Override
public void onItemClicked(RecyclerView recyclerView, int position, View v) {

}
我将imagebutton放入文件中,该文件会使我的recyclerview膨胀,如图所示:

“我的图像”按钮位于播放视频的活动中,如图所示。 [![图片] 这是我的适配器:

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

private Context context;
private LayoutInflater inflater;
private List<Data> data= Collections.emptyList();
Data current;
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, 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.id.setText(""+current.idServer+"");
    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;

    // create constructor to get widget reference
    public MyHolder(View itemView) {
        super(itemView);
        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);
        id = itemView.findViewById(R.id.id);
    }
}
公共类适配器扩展了RecyclerView.Adapter{
私人语境;
私人充气机;
私有列表数据=Collections.emptyList();
数据流;
私有int currentPos=0;
//创建构造函数以使用从MainActivity发送的上下文和数据
公共适配器(上下文、列表数据){
this.context=context;
充气器=充气器。从(上下文);
这个。数据=数据;
}
//创建viewholder时展开布局
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.container,父级,false);
MyHolder=新的MyHolder(视图);
报税表持有人;
}
//绑定数据
@凌驾
BindViewHolder上的公共无效(RecyclerView.ViewHolder,int位置){
//在回收利用过程中,对产品和产品的影响进行评估
我的持有人我的持有人=(我的持有人)持有人;
数据当前=数据获取(位置);
myHolder.textFishName.setText(current.catName);
myHolder.textSize.setText(current.sizeName);
myHolder.textSize.setVisibility(View.GONE);
myHolder.textType.setText(current.fishName);
myHolder.id.setText(“+current.idServer+”);
myHolder.textPrice.setText(“+current.price+”);
myHolder.textPrice.setVisibility(View.GONE);
myHolder.textPrice.setTextColor(ContextCompat.getColor(context,R.color.colorAccent));
//使用glide将图像加载到imageview中
Glide.with(context.load)(“http://192.168.43.196/vibe2/images/“+当前.fishImage)
.占位符(R.drawable.ic\U菜单\U摄像头)
.错误(R.drawable.ic\U菜单\U摄像头)
.into(myHolder.ivFish);
}
//从列表中返回总项
@凌驾
public int getItemCount(){
返回data.size();
}
类MyHolder扩展了RecyclerView.ViewHolder{
TextView textFishName;
图像视图ivFish;
文本视图文本大小;
文本视图文本类型;
text查看text价格;
文本视图计数器;
文本视图id;
//创建构造函数以获取小部件引用
公共MyHolder(查看项目视图){
超级(项目视图);
textFishName=itemView.findviewbyd(R.id.textFishName);
ivFish=itemView.findviewbyd(R.id.ivFish);
textSize=itemView.findviewbyd(R.id.textSize);
textType=itemView.findViewById(R.id.textType);
textPrice=itemView.findviewbyd(R.id.textPrice);
计数器=itemView.findViewById(R.id.counter);
id=itemView.findviewbyd(R.id.id);
}
}

}

这可以通过使用从activity到RecyclerView的ViewHolder的界面进行存档。在ViewHolder中,您可以实现onClickListener,在其中,您可以从ViewHolder传递点击偶数和所需信息

    public class Adapter extends RecyclerView.Adapter<MyHolder> {

    private Context context;
    private LayoutInflater inflater;
    private List<Data> data= Collections.emptyList();
    Data current;
    private int currentPos=0;
    // Custom listener to relay to selected data from ViewHolder to Activity
    private AdapterListener adapterListener;

    // create constructor to innitilize context and data sent from MainActivity
    public Adapter(Context context, List<Data> data, AdapterListener adapterListener){
        this.context=context;
        inflater= LayoutInflater.from(context);
        this.data=data;
        this.adapterListener = adapterListener;
    }

    // Inflate the layout when viewholder created
    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=inflater.inflate(R.layout.container, parent,false);
        MyHolder holder=new MyHolder(view, adapterListener);
        return holder;
    }

    // Bind data
    @Override
    public void onBindViewHolder(MyHolder holder, 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;
        myHolder.setData(data.get(position));


    }

    // return total item from List
    @Override
    public int getItemCount() {
        return data.size();
    }
}

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

    TextView textFishName;
    ImageView ivFish;
    TextView textSize;
    TextView textType;
    TextView textPrice;
    TextView counter;
    TextView id;
    Data data;

    // Adapter listener
    private AdapterListener adapterListener;

    // create constructor to get widget reference
    public MyHolder(View itemView, AdapterListener adapterListener) {
        super(itemView);
        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);
        id = itemView.findViewById(R.id.id);
        this.adapterListener = adapterListener;
    }

    public void setData(Data data){
        this.data = data;
        textFishName.setText(current.catName);
        textSize.setText(current.sizeName);
        textSize.setVisibility(View.GONE);
        textType.setText(current.fishName);
        id.setText(""+current.idServer+"");
        textPrice.setText("" + current.price + "");
        textPrice.setVisibility(View.GONE);
        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(ivFish);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.ivFish:
                adapterListener.onClickImageView(getAdapterPosition(), data);
                break;
        }
    }
}

public interface AdapterListener {
    void onClickImageView(int position, Data data);
}
公共类适配器扩展了RecyclerView.Adapter{
私人语境;
私人充气机;
私有列表数据=Collections.emptyList();
数据流;
私有int currentPos=0;
//自定义侦听器将选定数据从ViewHolder中继到“活动”
专用适配器列表器适配器列表器;
//创建构造函数以使用从MainActivity发送的上下文和数据
公共适配器(上下文上下文、列表数据、AdapterListener AdapterListener){
this.context=context;
充气器=充气器。从(上下文);
这个。数据=数据;
this.adapterListener=adapterListener;
}
//创建viewholder时展开布局
@凌驾
public MyHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.container,父级,false);
MyHolder=新的MyHolder(视图、适配器列表);
报税表持有人;
}
//绑定数据
@凌驾
公共无效onBindViewHolder(MyHolder,int位置){
//在回收利用过程中,对产品和产品的影响进行评估
我的持有人我的持有人=(我的持有人)持有人;
myHolder.setData(data.get(position));
}
//从列表中返回总项
@凌驾
public int getItemCount(){
返回data.size();
}
}
公共类MyHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
TextView textFishName;
图像视图ivFish;
文本视图文本大小;
文本视图文本类型;
text查看text价格;
文本视图计数器;
文本视图id;
数据;
//适配器侦听器
专用适配器列表器适配器列表器;
//创建构造函数以获取小部件引用
公共MyHolder(查看项目视图、适配器列表器适配器列表器){
超级(项目视图);
textFishName=itemView.findviewbyd(R.id.textFishName);
ivFish=itemView.findviewbyd(R.id.ivFish);
textSize=itemView.findviewbyd(R.id.textSize);
textType=itemView.findViewById(R.id.textType);
textPrice=itemView.findviewbyd(R.id.textPrice);
计数器=itemView.findViewById(R.id.counter);
id=itemView.findviewbyd(R.id.id);
this.adapterListener=adapterListener;
}
公共无效设置数据(数据){
这个数据=数据;
textFishName.setText(current.catName);
textSize.setText(当前的.sizeName);
textSize.setVisibility(View.GONE);
textType.setText(current.fishName);
id.setText(“+current.idServer+”);
textPrice.setText(“+current.price+”);
textPrice.setVisibility(View.GONE);
setTextColor(ContextCompat.getColor(context,R.color.colorAccent));
//将图像加载到i
    OnItemClick onItemClick;

public void setOnItemClick(OnItemClick onItemClick) {
    this.onItemClick = onItemClick;
}

public interface OnItemClick {
    void getPosition(int pos); //pass any things
}
   @Override
public void onBindViewHolder(ItemViewHolder holder, final int position) {
    // below code handle click event on recycler view item.
    String data = mStringList.get(position);
    holder.textView.setText(data);
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onItemClick.getPosition(position);
        }
    });
}
       adpater.setOnItemClick(new RecyclerViewAdpater.OnItemClick() {
        @Override
        public void getPosition(int pos) {
            Toast.makeText(getApplicationContext(),"Click Item Postion::"+pos,Toast.LENGTH_SHORT).show();
        }
    });
...
// create constructor to get widget reference
public MyHolder(View itemView) {
    super(itemView);
    ...
    ivFish = itemView.findViewById(R.id.ivFish);
    ...

    ivFish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(getAdapterPosition() != -1) { // Avoid Exception
                // use getAdapterPosition() to get the current position             
            }                
        }
    });
}