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

来源:互联网 发布:火箭队 知乎 编辑:程序博客网 时间:2024/06/06 00:57

该读书笔记是自己阅读《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;    }}

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

0 0
原创粉丝点击