ne peut pas les outils avec le onBindViewHolder dans ma classe étend RecyclerView.Adapter

Hong:

Je viens de rejoindre ce forum en une semaine et j'ai rencontré un problème avec RecyclerView.Adapter dans Android.

En suivant les codes d'échantillons et la documentation, j'ai essayé de construire une classe d'adaptateur personnalisé par moi - même et coincé à l' une des méthodes héritées de sa superclasse, RecyclerView.Adapter. Bien que j'écris une classe interne a hérité de la viewholder comme l'exemple de code, il a encore des erreurs en ce qui concerne la onBindViewHolder ()

voici mon code de la classe intérieure:

public static class ViewHolder extends RecyclerView.ViewHolder{
   private final TextView tvTitle,tvDate,tvTime;
   public ViewHolder(View v){
        super(v);

        Log.d(TAG,"building view holder");

        tvTitle=v.findViewById(R.id.item_tvTitle);
        tvDate=v.findViewById(R.id.item_tvDate);
        tvTime=v.findViewById(R.id.item_tvTime);

        //set onclick listener to start another activity
        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
       });
   }

   public TextView getTvTitle(){return tvTitle;}
   public TextView getTvDate(){return tvDate;}
   public TextView getTvTime(){return tvTime;}
}

voici mon code de l'adaptateur:

public class EventAdapter extends RecyclerView.Adapter {
    private static final String TAG="EventAdapter";
    private Event[] dataset;

    public static class ViewHolder extends RecyclerView.ViewHolder{
        private final TextView tvTitle,tvDate,tvTime;
        public ViewHolder(View v){
            super(v);

            Log.d(TAG,"building view holder");

            tvTitle=v.findViewById(R.id.item_tvTitle);
            tvDate=v.findViewById(R.id.item_tvDate);
            tvTime=v.findViewById(R.id.item_tvTime);

            //set onclick listener to start another activity
            v.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            });
        }

        public TextView getTvTitle(){return tvTitle;}
        public TextView getTvDate(){return tvDate;}
        public TextView getTvTime(){return tvTime;}
    }

    public EventAdapter(List<Event> dataset){
        Log.d(TAG,"Constructor, converting list to array");
        this.dataset=dataset.toArray(new Event[dataset.size()]);
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup container,int viewType){
        Log.d(TAG,"onCreateViewHolder");
        View v= LayoutInflater.from(container.getContext()).inflate(R.layout.item_event,container,false);
        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, final int position){
        Log.d(TAG,"onBindViewHolder");

        viewHolder.getTvTitle().setText("Title: "+dataset[position].getTitle());
        viewHolder.getTvDate().setText("Date: "+dataset[position].getDate());
        viewHolder.getTvTime().setText("Time: "+dataset[position].getTime());
    }

    @Override
    public int getItemCount(){return dataset.length;}
}

Et voici les erreurs montre:

1. class 'EventAdapter'(which is my class inherited from the adapter) must either declared as abstract or implements abstract method onBindViewHolder(VH,int) in 'Adapter'
2. method(means the onBindViewHolder) does not override or implement a method from a supertype

Merci pour résoudre mon problème

Yrii Borodkin:

Ainsi, pour compiler avec succès, le changement

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

et

 public void onBindViewHolder(EventAdapter.ViewHolder viewHolder, final int position)

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=277247&siteId=1
conseillé
Classement