您的位置:首页 > 移动开发 > Android开发

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

2015-12-16 23:18 459 查看
该读书笔记是自己阅读《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;
}

}


这个列表项很简单,不过你可以在此基础上进行补充。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: