Android之RecyclerView控件的简单运用

随着Android发展,Listview已经不能够很好的满足我们的需求了,这时候RecyclerView出现了。

今天我们就来谈谈RecyclerView的简单的使用

private RecyclerView rv_home_content;
private HomeFragmentAdapter myadapter;

rv_home_content = (RecyclerView) findViewById(R.id.rv_home_content);

//resultbeandata为填充的数据

myadapter=new HomeFragmentAdapter(mContext,resultbeandata);
rv_home_content.setAdapter(myadapter);
接下来就是重点了
public class HomeFragmentAdapter extends Adapter {

    public static final int BANNER = 0;
    public static final int CHANNEL = 1;
               ...
     //默认第一个为BANNER
    private static int CurrentType = BANNER;

    private Context mContext;
    private ResultBeanData resultbeandata;
    private final LayoutInflater mInflater;

    public HomeFragmentAdapter(Context mContext, ResultBeanData resultbeandata) {
        //从构造方法传进来的List的数据
        this.mContext = mContext;
        this.resultbeandata = resultbeandata;
        mInflater = LayoutInflater.from(mContext);
    }


    /*
    * 创建viewholder
    *
    * */
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == BANNER) {
            return new BannerViewHolder(mContext, mInflater.inflate(R.layout.banner_viewpager, null));
        } else if (viewType == CHANNEL) {
            return new ChannelViewHolder(mContext, mInflater.inflate(R.layout.channel_item, null));
        } 

        return null;
    }

    /*
    * getview()
    *   绑定数据
    * */
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (getItemViewType(position) == BANNER) {
            BannerViewHolder bannerviewholder = (BannerViewHolder) holder;
              //把数据设置到相应的控件,完成数据的填充
            bannerviewholder.setData();
        } else if (getItemViewType(position) == CHANNEL) {
            ChannelViewHolder channelviewholder = (ChannelViewHolder) holder;
            channelviewholder.setData();
        } 
    }

    /*
    * 返回item的个数,实际开发,从1慢慢变到最大数
    *
    * */
    @Override
    public int getItemCount() {
        return 2;
    }

    /*
    * 放回0-1的item类型
    * */
    @Override
    public int getItemViewType(int position) {
        switch (position) {
            case BANNER:
                CurrentType = BANNER;
                break;
            case CHANNEL:
                CurrentType = CHANNEL;
                break;
          }


        return CurrentType;
    }

   
    //频道的viewholder
    class ChannelViewHolder extends RecyclerView.ViewHolder {
        private Context mContext;
        private View itemView;
        private GridView gv_channel;

        public ChannelViewHolder(Context mContext, View itemView) {
            super(itemView);
            this.mContext = mContext;
            this.itemView = itemView;
            //使用GridView填充
            gv_channel = (GridView) itemView.findViewById(R.id.gv_channel);
        }

        public void setData() {
            ChannelAdapter channelAdapter = new ChannelAdapter(mContext, resultbeandata);
            gv_channel.setAdapter(channelAdapter);
            gv_channel.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Toast.makeText(mContext, "position==" + position, Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
public class ChannelAdapter extends BaseAdapter {
     private Context mContext;
    private  ResultBeanData resultbeandata;

    public ChannelAdapter(Context mContext, ResultBeanData resultbeandata) {
        this.mContext=mContext;
        this.resultbeandata=resultbeandata;
    }

    @Override
    public int getCount() {
        return resultbeandata.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) {
        ViewHolder viewholder;
        if(convertView==null){
            convertView=View.inflate(mContext,R.layout.item_channel,null);
            viewholder=new ViewHolder();
            viewholder.iv_channel=(ImageView)convertView.findViewById(R.id.iv_channel);
            viewholder.tv_des=(TextView) convertView.findViewById(R.id.tv_des);
            convertView.setTag(viewholder);
        }
        else{
            viewholder= (ViewHolder) convertView.getTag();
        }
        viewholder.tv_des.setText("hello");
        viewholder.iv_channel.setImageResource(R.drawable.a);
        return convertView;
    }
    class ViewHolder {
        private ImageView iv_channel;
        private TextView tv_des;
    }
}
}


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值