Android RecyclerView

Android RecyclerView的简单使用

首先添加recyclerview的依赖函数:
compile 'com.android.support:recyclerview-v7:24.2.1'

现在才能正式开始使用recyclerview;
第一步:在xml文件中创建recycleview:

<android.support.v7.widget.RecyclerView
        android:id="@+id/recycleview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

第二步:创建recyclerview的布局文件(这里我给大家创建了一个加载数据的textview和响应点击事件的button):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"/>

</LinearLayout>

第三步:创建recyclerview布局文件对应的类

public class Text {

    private String text;  //因为布局时textview所以这里用String,图片用int

    public Text(String text) {    
        this.text = text;
    }

    public String getText() {
        return text;
    }
}

第四步:创建适配器adapter

public class TextAdapter extends RecyclerView.Adapter<TextAdapter.ViewHolder> {

    private List<Text> textList;   //存储Text对象的list

    private Context context;       //获取fragment的context

    public TextAdapter(List<Text> textList,Context context) {
        this.textList = textList;
        this.context = context;
    }

    @Override
    public TextAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //传入recyclerview的布局文件
        View view = LayoutInflater.from(context).inflate(R.layout.recycler_card,parent,false);
        ViewHolder viewHolder = new ViewHolder(view);//为ViewHolder添加view
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final TextAdapter.ViewHolder holder, int position) {
        /*
        * 获取当前位置的对象
        * */
        final Text text = textList.get(position);
        /*
        * 为textview添加数据
        * */
        holder.text.setText(text.getText());
        /*
        * 响应button的点击事件
        * */
        holder.button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(context,text.getText(),Toast.LENGTH_SHORT).show();//点击都出现当前textview上的值
            }
        });
    }

    @Override
    public int getItemCount() {
        return textList.size(); //返回textList长度
    }

    static class ViewHolder extends RecyclerView.ViewHolder {  //创建一个继承RecyclerView.ViewHolder的类

        TextView text;  //布局文件中的控件

        Button button;  //布局文件中的控件

        public ViewHolder(View itemView) {
            super(itemView);
            text = (TextView) itemView.findViewById(R.id.text);
            button = (Button) itemView.findViewById(R.id.button);
        }
    }
}

第四步:添加数据并显示recyclerview

public class MainActivity extends AppCompatActivity {

    private List<Text> list = new ArrayList<>();

    private RecyclerView recyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();//向list添加数据
        recyclerView = (RecyclerView) findViewById(R.id.recycleview);
        LinearLayoutManager manager = new LinearLayoutManager(this);//初始化线性布局
        manager.setOrientation(LinearLayoutManager.HORIZONTAL);//设置线性布局为横向(不设置默认为纵向)
        recyclerView.setLayoutManager(manager);
        TextAdapter adapter = new TextAdapter(list,this);//初始化TextAdapter
        recyclerView.setAdapter(adapter);
    }

    private void init() {
        Text text = new Text("你好0");
        list.add(text);
        Text text1 = new Text("你好1");
        list.add(text1);
        Text text2 = new Text("你好2");
        list.add(text2);
        Text text3 = new Text("你好3");
        list.add(text3);
        Text text4 = new Text("你好4");
        list.add(text4);
        Text text5 = new Text("你好5");
        list.add(text5);
    }
}

横向图
横向
横向图
点击
纵向图
纵向
纵向图
点击

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值