【Android】recycleView适配器

文章目录

传统ListView的适配器

public class FavorMusicAdapter extends BaseAdapter {
    private List<FavorMusicBean> favorMusicList;
    private ListView favor_lv_music;
    private TextView item_music_num,item_music_song,item_music_singer,item_music_line,item_music_album,item_music_duration;
    Context context;
    LocalMusicAdapter.OnItemClickListener onItemClickListener;

    /**
     * 初始化实例
     */
    public FavorMusicAdapter(Context context,List<FavorMusicBean> listData) {
        this.context = context;
        this.favorMusicList = listData;

    }
    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = (LocalMusicAdapter.OnItemClickListener) onItemClickListener;
    }

    public interface OnItemClickListener{
        public void OnItemClick(View view,int position);
    }


    @Override
    public int getCount() {
        return favorMusicList.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    /**
     * 更新视图
     */
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view;
        FavorMusicBean favorMusicBean = favorMusicList.get(position);

        if (convertView == null) {
            view = LayoutInflater.from(context).inflate(R.layout.item_music, null);
        } else {
            view = convertView;
        }

        //初始化控件
        item_music_num = view.findViewById(R.id.item_music_num);
        item_music_song = view.findViewById(R.id.item_music_song);
        item_music_singer = view.findViewById(R.id.item_music_singer);
        item_music_album = view.findViewById(R.id.item_music_album);
        item_music_duration = view.findViewById(R.id.item_music_duration);

        //根据请求到的数据更新视图
        item_music_num.setText(favorMusicBean.getId());
        item_music_song.setText(favorMusicBean.getSong());
        item_music_singer.setText(favorMusicBean.getSinger());
        item_music_album.setText(favorMusicBean.getAlbum());
        item_music_duration.setText(favorMusicBean.getDuration());


        return view;
    }
}

RecycleView适配器

public class LocalMusicAdapter extends RecyclerView.Adapter<LocalMusicAdapter.LocalMusicViewHolder>{
    Context context;
    List<LocalMusicBean> mDatas;

    OnItemClickListener onItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    public interface OnItemClickListener{
        public void OnItemClick(View view, int position);
    }
    public LocalMusicAdapter(Context context, List<LocalMusicBean> mDatas) {
        this.context = context;
        this.mDatas = mDatas;
    }

    /**
     * 当需要新的ViewHolder来显示列表项时,会调用onCreateViewHolder方法去创建ViewHolder
     * @param parent
     * @param viewType
     * @return
     */
    @NonNull
    @Override
    public LocalMusicViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_music,parent,false);
        LocalMusicViewHolder holder = new LocalMusicViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull LocalMusicViewHolder holder, final int position) {
        LocalMusicBean musicBean = mDatas.get(position);
        holder.idTv.setText(musicBean.getId());
        holder.songTv.setText(musicBean.getSong());
        holder.singerTv.setText(musicBean.getSinger());
        holder.albumTv.setText(musicBean.getAlbum());
        holder.timeTv.setText(musicBean.getDuration());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onItemClickListener.OnItemClick(v,position);
            }
        });
    }

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

    /**
     * 内部类
     * 初始化控件
     * 为每个holder对象添加 itemView
     */
    class LocalMusicViewHolder extends RecyclerView.ViewHolder{

        TextView idTv,songTv,singerTv,albumTv,timeTv;

        public LocalMusicViewHolder(View itemView) {
            super(itemView);
            idTv = itemView.findViewById(R.id.item_music_num);
            songTv = itemView.findViewById(R.id.item_music_song);
            singerTv = itemView.findViewById(R.id.item_music_singer);
            albumTv = itemView.findViewById(R.id.item_music_album);
            timeTv = itemView.findViewById(R.id.item_music_duration);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41864648/article/details/106437512