RecyclerView入门

终于开始我的一篇博客了。有时间会陆续的把自己的积累写下来。废话不说,开始。很久之前就听别人说RecyclerView,一直想使用,看也没有仔细看过,主要是使用eclipse开发的时候不会引入jar。刚刚转到Android Studio,终于可以愉快的使用了。
第一次使用RecyclerView控件,决定实现一个文本列表,大神请忽视。于是新建布局文件item。含有TextView
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

使用列表,肯定是要自定义Adapter,于是就有了MyAdapter。集成自RecyclerView.Adapter
泛型为我自己的Holder。之前集成BaseAdapter的时候,都是自己在getView方法中,自己写Holder。在这里是在onCreateViewHolder中绑定item布局。然后返回到ViewHolder中。在Holder中绑定文本id。接下来就是在onBindViewHolder中愉快的绑定数据了。
最后不要忘记 recyclerView.setAdapter(adapter);好了,搞定运行。运行,结果为空。查看log,发现报错No layout manager attached; skipping layout
查看API发现是没有设置LayoutManager。于是设置。包括LinearLayoutManager,GridLayoutManager等。设置`
GridLayoutManager layoutManager = new GridLayoutManager(MainActivity.this, 2);
recyclerView.setLayoutManager(layoutManager);
运行效果如图
这里写图片描述

最后。我的第一次写博客不会上传代码。粘贴我的类出来。

“`
package com.example.myrecycleview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Arrays;

public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
MyAdapter adapter;
ArrayList list;
Button button;
Object[] ss;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    recyclerView = (RecyclerView) findViewById(R.id.recycleView);
    button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            list.add("点击添加第一项");
            list.add("点击添加第二项");
            list.add("点击添加第三项");
            list.add("点击添加第四项");
            list.add("点击添加第五项");
            list.add("点击添加第六项");
            //将list转化为数组
            ss = list.toArray();
            adapter.notifyDataSetChanged();
        }
    });
    adapter = new MyAdapter();
    //准备数据
    prepare();
    // 设置View的布局为线性布局
    // LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
    // 不设置,默认为竖屏
    // layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
    // 设置View的布局为九宫格式
    // 第二个参数为设置九宫格为几列
    GridLayoutManager layoutManager = new GridLayoutManager(MainActivity.this, 2);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setAdapter(adapter);
}

private void prepare() {
    ss = getResources().getStringArray(R.array.items);
    L.i("数组是" + Arrays.toString(ss));
    list = new ArrayList();
    for (int i = 0; i < ss.length; i++) {
        list.add((String) ss[i]);
    }
    L.i("list的数据是" + list.toString());
}


class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //返回布局
        return new ViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item, parent, false));
    }

    @Override
    public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
    //集合数据
    //  holder.textView.setText(list.get(position));
        holder.textView.setText("" + ss[position]);

    }

    @Override
    public int getItemCount() {
        //集合的方式

// if (list == null)
// return 0;
// return list.size();
// 使用的是数据数据也可以,和list数据同样效果
if (ss == null)
return 0;
return ss.length;
}

    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;

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

}

“`如果不正确之处还请赐教。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值