Android读书笔记之用RecyclerView显示列表项

该读书笔记是自己阅读《Android编程权威指南》和《The.Big.Nerd.Ranch.Guide.2nd.Edition》(《Android编程权威指南》第二版)所做的一些笔记。

在上一篇文章(见:http://blog.csdn.net/u014285517/article/details/50331971)中只是在Fragment中放了一个TextView,略显单薄。。。

这篇文章在Fragment中放个 RecyclerView来显示一个0-99的列表数据。

首先来看核心的ListFragment的代码:

package com.example.zhan.fragmenttest;

import android.app.Fragment;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

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

/**
 * Created by zhang on 12/16/2015.
 */
public class ListFragment extends Fragment {

    private RecyclerView mRecyclerView;
    private ItemAdapter mItemAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_list,container,false);

        mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));//不要忘了。。

        //产生列表数据
        List<Item> itemList = new ArrayList<>();
        for (int i = 0;i < 100;i++) {
            Item item = new Item();
            item.setId(i);
            itemList.add(item);
        }

        mItemAdapter = new ItemAdapter(itemList);
        mRecyclerView.setAdapter(mItemAdapter);

        return view;
    }

    private class ItemHolder extends RecyclerView.ViewHolder {

        private TextView mTextView;

        public ItemHolder(View itemView) {
            super(itemView);
            mTextView = (TextView) itemView;
        }

    }

    private class ItemAdapter extends RecyclerView.Adapter<ItemHolder> {

        private List<Item> mItems;

        public ItemAdapter(List<Item> items) {
            mItems = items;
        }

        @Override
        public ItemHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
            LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
            View view = layoutInflater.inflate(android.R.layout.simple_list_item_1,
                    viewGroup,false);
            return new ItemHolder(view);
        }

        @Override
        public void onBindViewHolder(ItemHolder viewHolder, int i) {
            Item item = mItems.get(i);
            //这里开始直接传数值,结果被当做资源ID了。。。。。
            //然后就android.content.res.Resources$NotFoundException
            viewHolder.mTextView.setText(String.valueOf(item.getId()));
        }

        @Override
        public int getItemCount() {
            return mItems.size();
        }

    }

}

关于RecyclerView这里不多讲了。。

布局文件fragment_list.xml如下:

<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/recycler_view"
    android:layout_height="match_parent"
    android:layout_width="match_parent"/>

Activity部分代码几乎没变,就是把fragment =new BlankFragment(); 改成了fragment = new ListFragment();这里代码就不贴了,可以看Android Fragment学习一那篇博客。

还有个表示列表项的类:

package com.example.zhan.fragmenttest;

/**
 * Created by zhang on 12/16/2015.
 */
public class Item {

    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

}

这个列表项很简单,不过你可以在此基础上进行补充。

    原文作者:xtrb
    原文地址: https://blog.csdn.net/u014285517/article/details/50333497
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞