Fragment实践————简易版新闻应用

项目名称: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() {
  ...
 }
}

猜你喜欢

转载自www.cnblogs.com/kyun/p/9840304.html