项目名称:FragmentBestPratice
碎片的生命周期
Fragment
onAttach():当碎片和活动建立关联的时候调用
onCreateView():为碎片创建视图时调用。
onActivityCreate:确保与碎片相关联的活动一定已经创建完毕的时候调用。
onDestroyView:当与碎片关联的视图被移除的时候调用。
onDetach:当碎片和活动解除关联的时候调用。
使用RecyclerView关键步骤:写一个适配器,新建一个内部类NewsAdapter来作为RecyclerView的适配器。
class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> { private List<News> mNewsList; class ViewHolder extends RecyclerView.ViewHolder { TextView newsTitleText; public ViewHolder(View view) { super(view); newsTitleText=(TextView)view.findViewById(R.id.news_title); } } public NewsAdapter<List<News> newsList) { mNewsList = newsList; } }
覆写 onCreateViewHolder,onBindViewHolder,getItemCount方法,
@Override public int getItemCount() { return mNewsList.size(); }
@Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item,parent,false); final ViewHodler holder = new ViewHolder(view); view.setOnClickListener(...); return holder; }
@Override public void onBindViewHolder(ViewHolder holder, int position) { News new = mNewsList.get(position); holder.newsTitleText.setText(news.getTitle()); }
向RecyclerView中填充数据
public class NewsTitleFragment extends Fragment { ... @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View view = inflate.inflate(R.layout.news_title_frag,container,false); RecyclerView newsTitleRecyclerView=(RecyclerView)view.findViewById(R.id.news_title_recycler_view); LinearLayoutManager layoutManager= new LinearLayoutManager(getActivity()); newsTitleRecyclerView.setLayoutManager(layoutManager); NewsAdapter adapter = new NewsAdapter(getNews()); newsTitleRecyclerView.setAdapter(adapter); return view; } private List<News> getNews() { ... } }