您当前的位置: 首页 >  android

鱼香ROS

暂无认证

  • 6浏览

    0关注

    498博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Android开发之滚动控件RecyclerView

鱼香ROS 发布时间:2017-07-14 16:26:21 ,浏览量:6

概述

今天是初次接触到这个RecyclerView,对她的唯一的感觉就是爱不释手哈!绝对是“一用倾人城,再用倾人国”的,根本停不下来的呢!简直甩ListView几条街的存在,接下来让我们一睹芳容吧!

基本使用

先来个简单的例子过下手!

第一步

增加依赖包

    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:percent:26.0.0-alpha1'
    compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
第二步

xml中引入控件

第三步

建立布局文件



    
    

看下我们可爱的冰淇淋,哈哈,你是不是也饿了? 这里写图片描述

第四步

建立一个Icecream类

package sangxin.recyclerview;

/**
 * Created by Administrator on 2017/7/14 0014.
 */

public class Icecream {
    int Ice_image;
    String Ice_name;
    public  Icecream(int Ice_image,String Ice_name){
        this.Ice_image=Ice_image;
        this.Ice_name=Ice_name;
    }

    public void setIce_image(int ice_image) {
        Ice_image = ice_image;
    }

    public void setIce_name(String ice_name) {
        Ice_name = ice_name;
    }

    public int getIce_image() {
        return Ice_image;
    }

    public String getIce_name() {
        return Ice_name;
    }
}
第五步

用过ListView的童鞋肯定清楚,如果要优化加载速度肯定离不开一个叫做ViewHolder的东东,回头有时间在详细讲一下ViewHolder,今天我们先用着。 再建立一个用于优化的类!这个类的主要作用是通过IceViewHold的构造方法方法,用view找到image和text的id,以便下步使用。

package sangxin.recyclerview;


import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * Created by Administrator on 2017/7/14 0014.
 */

public class IceViewHold extends RecyclerView.ViewHolder {
    ImageView imageView;
    TextView textView;

    public IceViewHold(View itemView) {
        super(itemView);
        imageView=itemView.findViewById(R.id.list_image);
        textView=itemView.findViewById(R.id.list_textView);
    }
}
第六步

为我们的RecyclerView建立一个Adapter,告诉你个小秘密我们的RecycleView有我们自己的Adapter。来看看吧!

package sangxin.recyclerview;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.List;

/**
 * Created by Administrator on 2017/7/14 0014.
 */

public class IceCreamAdapter extends RecyclerView.Adapter{
    private List icelist;

    public  IceCreamAdapter(List list){
        this.icelist=list;
    }


    @Override
    public IceViewHold onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.icecream_list_item,parent,false);
        IceViewHold iceViewHold =new IceViewHold(view);
        return iceViewHold;
    }

    @Override
    public void onBindViewHolder(IceViewHold holder, int position) {
        Icecream icecream = icelist.get(position);
        holder.imageView.setImageResource(icecream.getIce_image());
        holder.textView.setText(icecream.getIce_name());
    }

    @Override
    public int getItemCount() {
        return icelist.size();
    }
}
第七步

终于回到主Activity了!我们来看下代码和运行效果吧!

package sangxin.recyclerview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity_RecyclerView extends AppCompatActivity {
    List ice_list ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.recycler_view);
        ice_list=new ArrayList();
        AddDate();
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.RecyclerView);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity_RecyclerView.this);

        IceCreamAdapter iceCreamAdapter = new IceCreamAdapter(ice_list);

        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(iceCreamAdapter);
    }

    void AddDate(){
        Icecream icecream01 = new Icecream(R.drawable.icecream01,"冰淇淋01");
        ice_list.add(icecream01);
        Icecream icecream02 = new Icecream(R.drawable.icecream02,"冰淇淋02");
        ice_list.add(icecream02);
        Icecream icecream03 = new Icecream(R.drawable.icecream03,"冰淇淋03");
        ice_list.add(icecream03);
        Icecream icecream04 = new Icecream(R.drawable.icecream04,"冰淇淋04");
        ice_list.add(icecream04);
        Icecream icecream05 = new Icecream(R.drawable.icecream05,"冰淇淋05");
        ice_list.add(icecream05);
        Icecream icecream06 = new Icecream(R.drawable.icecream06,"冰淇淋06");
        ice_list.add(icecream06);
        Icecream icecream07 = new Icecream(R.drawable.icecream07,"冰淇淋07");
        ice_list.add(icecream07);
        Icecream icecream08 = new Icecream(R.drawable.icecream08,"冰淇淋08");
        ice_list.add(icecream08);
        Icecream icecream09 = new Icecream(R.drawable.icecream09,"冰淇淋09");
        ice_list.add(icecream09);
        Icecream icecream10 = new Icecream(R.drawable.icecream10,"冰淇淋10");
        ice_list.add(icecream10);
        Icecream icecream11 = new Icecream(R.drawable.icecream11,"冰淇淋11");
        ice_list.add(icecream11);
        Icecream icecream12 = new Icecream(R.drawable.icecream12,"冰淇淋12");
        ice_list.add(icecream12);
        Icecream icecream13 = new Icecream(R.drawable.icecream13,"冰淇淋13");
        ice_list.add(icecream13);
        Icecream icecream14 = new Icecream(R.drawable.icecream14,"冰淇淋14");
        ice_list.add(icecream14);
        Icecream icecream15 = new Icecream(R.drawable.icecream15,"冰淇淋15");
        ice_list.add(icecream15);
        Icecream icecream16 = new Icecream(R.drawable.icecream16,"冰淇淋16");
        ice_list.add(icecream16);
        Icecream icecream17 = new Icecream(R.drawable.icecream17,"冰淇淋17");
        ice_list.add(icecream17);
        Icecream icecream18 = new Icecream(R.drawable.icecream18,"冰淇淋18");
        ice_list.add(icecream18);
        Icecream icecream19 = new Icecream(R.drawable.icecream19,"冰淇淋19");
        ice_list.add(icecream19);
        Icecream icecream20 = new Icecream(R.drawable.icecream20,"冰淇淋20");
        ice_list.add(icecream20);

    }
}

先看下这个界面,我们再开始下一步的工作! 这里写图片描述

第八步:分析一下

关于有时候,recyclerview会越滚越长的原因,这个很好解决,看看自己的item布局里面的,height全部改为wrap_content就OK了!

关注
打赏
1666092100
查看更多评论
立即登录/注册

微信扫码登录

0.0444s