该读书笔记是自己阅读《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;
}
}
这个列表项很简单,不过你可以在此基础上进行补充。