亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在不依賴于位置的回收視圖上設置 OnClickListener

如何在不依賴于位置的回收視圖上設置 OnClickListener

慕少森 2023-05-17 17:59:11
我希望 onclicklistener 方法打開與對象相關的活動:entidad1、entidad2 或 entidad3。MainActivity.java 上的 OnRecipe 方法,如果 entidad1 出現,它會帶我到 x 活動,如果 entidad2 出現在 y 活動等,關于如何做的任何想法,因為現在它需要我所有entidad1 活動的時間。我想這一定與使用優先級來決定打開哪個而不是位置有關。那是我的適配器:package com.test.platos_4;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.RatingBar;import android.widget.TextView;import java.util.List;public class Adaptador2  extends RecyclerView.Adapter<Adaptador2.ViewHolder>{    private List<Entidad2> listItems;    private OnRecipeListener mOnRecipeListener;    public  Adaptador2(List<Entidad2> listItems, OnRecipeListener onRecipeListener) {        this.listItems = listItems;        this.mOnRecipeListener = onRecipeListener;    }    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.elemento_lista2, parent, false);        return new ViewHolder(view, mOnRecipeListener);    }    @Override    public void onBindViewHolder(ViewHolder viewholder, int position) {        int resource = listItems.get(position).getImgFoto();        String title = listItems.get(position).getTitulo();        String time = listItems.get(position).getTiempo();        int barra = listItems.get(position).getRating();        //int fondo = listItems.get(position).getColorfondo();        viewholder.setData(resource, title, time, barra);        // por si necesito color de fondo viewholder.setData(resource, title, time, barra, fondo);    }    @Override    public int getItemCount() {        return listItems.size();    }    class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {        private ImageView imgFoto;        private TextView titulo;        private TextView tiempo;        private RatingBar ratingBar;        }
查看完整描述

1 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

您正在嘗試按優先級區分您的項目,但您正在將項目位置從適配器傳遞給您的活動。您需要傳遞點擊項目的優先級而不是其位置。我已經更改了您的 Adaptor2 類


package com.test.platos_4;


import android.support.v7.widget.RecyclerView;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;

import android.widget.RatingBar;

import android.widget.TextView;


import java.util.List;


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

{

private List<Entidad2> listItems;

private OnRecipeListener mOnRecipeListener;


public  Adaptador2(List<Entidad2> listItems, OnRecipeListener onRecipeListener) {

    this.listItems = listItems;

    this.mOnRecipeListener = onRecipeListener;

}



@Override

public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

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

    return new ViewHolder(view, mOnRecipeListener);

}


@Override

public void onBindViewHolder(ViewHolder viewholder, int position) {

    Entidad2 entidad = listItems.get(position);

    int resource = entidad.getImgFoto();

    String title = entidad.getTitulo();

    String time = entidad.getTiempo();

    int barra = entidad.getRating();

    final int priority = entidad.getPriority();

    //int fondo = listItems.get(position).getColorfondo();

    viewholder.setData(resource, title, time, barra);


//You can pass the clicked item's priority back to your activity like this

    viewholder.itemView.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

    mOnRecipeListener.OnRecipe(priority);

        }

    });

    // por si necesito color de fondo viewholder.setData(resource, title, time, barra, fondo);

}


@Override

public int getItemCount() {

    return listItems.size();

}

class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {


    private ImageView imgFoto;

    private TextView titulo;

    private TextView tiempo;

    private RatingBar ratingBar;

    //private ImageView colorfondo;

    OnRecipeListener onRecipeListener;


    public ViewHolder(View itemView, OnRecipeListener onRecipeListener) {

        super(itemView);


        imgFoto = itemView.findViewById(R.id.imgFoto);

        titulo = itemView.findViewById(R.id.tvTitulo);

        tiempo = itemView.findViewById(R.id.tvTiempo);

        ratingBar = itemView.findViewById(R.id.ratingBarVerd);

        //colorfondo = itemView.findViewById(R.id.colorfondo);


        //This is useless

        //this.onRecipeListener = onRecipeListener;


    }


    //por si necesito color de fondo private void setData(int resource, String title, String time, int barra, int fondo){

    private void setData(int resource, String title, String time, int barra){

        imgFoto.setImageResource(resource);

        titulo.setText(title);

        tiempo.setText(time);

        ratingBar.setRating(barra);

        //colorfondo.setImageResource(fondo);


    }


    @Override

    public void onClick(View v) {


    }

}


public interface OnRecipeListener{

    void OnRecipe(int priority);

}

}



查看完整回答
反對 回復 2023-05-17
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號