在线咨询
微信咨询
服务热线
服务热线:15639912513
TOP
当前位置:
首页 > 新闻中心> 安卓课堂>Recyclerview使用LinearLayoutMana…

Recyclerview使用LinearLayoutManager的步骤

发布时间:2020-03-18 浏览:1919次

w88app开发使用Recyclerview,用LinearLayoutManager的步骤。

下面先介绍步骤:

第一步,设置布局管理器。

第二步,设置适配器。

那么下面介绍使用的java代码。

第一步,设置布局管理器。

LinearLayoutManager layoutManager=new LinearLayoutManager(this);

mDetailList.setLayoutManager(layoutManager);

mDetailList是个什么东西呢?

mDetailList=this.findViewById(R.id.album_detail_list);

mDetailList其实是androidx.recyclerview.widget.RecyclerView这个控件。

第二步,设置适配器。

mDetailListAdapter =new DetailListAdapter();

mDetailList.setAdapter(mDetailListAdapter);

mDetailListAdapter是什么呢?

mDetailListAdapter是一个适配器。下面把DetailListAdapter整个适配器给粘贴来。供大家观摩。

package cn.xhhkj.himalaya.adapters;


import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.TextView;


import androidx.annotation.NonNull;

import androidx.recyclerview.widget.RecyclerView;


import com.ximalaya.ting.android.opensdk.model.track.Track;


import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.List;


import cn.xhhkj.himalaya.R;


public class DetailListAdapter extends RecyclerView.Adapter<DetailListAdapter.InnerHolder> {

    private List<Track> mDetailData=new ArrayList<>();

    //格式化时间

    private SimpleDateFormat mUpdateDateFormat=new SimpleDateFormat("yyyy-MM-dd");

    private SimpleDateFormat mDurationFormat = new SimpleDateFormat("mm:ss");

    @NonNull

    @Override

    public InnerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View itemView= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_album_detail,parent,false);

        return new InnerHolder(itemView);

    }


    @Override

    public void onBindViewHolder(@NonNull InnerHolder holder, int position) {

    //找到控件,设置数据

        View itemView=holder.itemView;

        //顺序id

        TextView orderTv=itemView.findViewById(R.id.order_text);

        //标题

        TextView titleTv=itemView.findViewById(R.id.detail_item_title);

        //播放次数

        TextView playCountTv=itemView.findViewById(R.id.detail_item_play_count);

        //时长

        TextView durationTv=itemView.findViewById(R.id.detail_item_duration);

        //更新日期

        TextView updateDateTv=itemView.findViewById(R.id.detail_item_update_time);

        //设置数据

      Track track=mDetailData.get(position);

     orderTv.setText((position + 1) + "");

      titleTv.setText(track.getTrackTitle());

        playCountTv.setText(track.getPlayCount() + "");

        int durationMil = track.getDuration() * 1000;

        String duration = mDurationFormat.format(durationMil);

        durationTv.setText(duration);

       String updateTimeText=mUpdateDateFormat.format(track.getUpdatedAt());

       updateDateTv.setText(updateTimeText);

    }


    @Override

    public int getItemCount() {

        return mDetailData.size();

    }


    public void setData(List<Track> tracks) {

        //清除原来的数据

mDetailData.clear();

//添加新的数据

mDetailData.addAll(tracks);

//更新UI

notifyDataSetChanged();

    }


    public class InnerHolder extends RecyclerView.ViewHolder {

        public InnerHolder(@NonNull View itemView) {

            super(itemView);

        }

    }


}

注意:

    public InnerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View itemView= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_album_detail,parent,false);

        return new InnerHolder(itemView);

    }

在这个函数中,特别注意View itemView= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_album_detail,parent,false);

这段话别的意思没有,意思是需要有个layout布局代码,以供适配器用。这个适配器就是R.layout.item_album_detail。这里面主要是用线性布局和相对布局来制作的,用来放到Recyclerview。


TAG
1919
该内容对我有帮助