博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
碎片的实例
阅读量:4509 次
发布时间:2019-06-08

本文共 6086 字,大约阅读时间需要 20 分钟。

1.添加依赖因为要用到RecyclerView的控件

2类--.建立新闻的类(两个字段(title和content))

public class News {
private String title; private String content; public String getTitle() {
return title; } public void setTitle(String title) {
this.title=title; } public String getContent() {
return content; } public void setContent(String content) {
this.content=content; } } 3.布局--新建新闻内容的布局 布局有两块(标题(TextView)和内容(TextView)中间用一个View隔开(装一条线)) 4.类--新建NewContentFrament类继承Frament
public class NewsContentFragment extends Fragment {
private View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState) {
view=inflater.inflate(R.layout.news_content_frag,container,false); return view; }//先找到刚刚建立的布局中的View的界面返回赋给之前定义好的View public void refresh(String newsTitle,String newsContent) {
View visibilityLayout=view.findViewById(R.id.visibility_layout); visibilityLayout.setVisibility(View.VISIBLE); TextView newsTitleText=(TextView)view.findViewById(R.id.new_title); TextView newsContentText=(TextView) view.findViewById(R.id.new_content); newsTitleText.setText(newsTitle);//刷新新闻的标题 newsContentText.setText(newsContent);//刷新内容 }//从View中获得各种需要使用的信息包括,标题和内容 } 以上完成双页模式显示 5.布局--新建一个新活动(NewsContentActivity相应为产生的布局添加一个碎片)
6.修改最开始那个活动的代码
public class NewsContentActivity extends AppCompatActivity {
public static void actionStart(Context context, String newsTitle,String newsContent) {
Intent intent=new Intent(context,NewsContentActivity.class);//定义活动传进新闻活动标题和内容 intent.putExtra("news_title",newsTitle); intent.putExtra("newsContent",newsContent); context.startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_news_content); String newsTitle=getIntent().getStringExtra("news_title"); String newContent=getIntent().getStringExtra("news_content"); NewsContentFragment newsContentFragment=(NewsContentFragment)getSupportFragmentManager().findFragmentById(R.id.news_content_fragment); newsContentFragment.refresh(newsTitle,newContent); } } 7.布局--新建新闻列表的布局此处要用到recyclerView的列表布局
8.布局---新建RecyclerView子项的布局
9.类--新建新闻列表的碎片里面放新闻列表
public class NewsTitleFragment extends Fragment {
private boolean isTwoPane; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState) {
View view=inflater.inflate(R.layout.news_title_frag,container,false); return view; }//传进来布局
public void onActivityCreated(Bundle saveInstanceState) {
super.onActivityCreated(saveInstanceState); if(getActivity().findViewById(R.id.news_content_fragment)!=null) {
isTwoPane=true; } else {
isTwoPane=false; } } 10.新建一个主活动的布局//两个碎片
>
11.在NewsTitleFragment中通过Recycler将新闻列表展示处理来,需要在其内部放一个适配器,就在里面定义
class NewsAdapter extends RecyclerView.Adapter
{
private List
mNewList; class ViewHolder extends RecyclerView.ViewHolder {
TextView newsTitleText; public ViewHolder(View view) {
super(view); newsTitleText=(TextView) view.findViewById(R.id.news_title); } } public NewsAdapter(List
newsList) {
mNewList=newsList; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item,parent,false); final ViewHolder holder=new ViewHolder(view); view.setOnClickListener(new View.OnClickListener(){
@Override public void onCLick(View v) {
News news=mNewList.get(holder.getAdapterPosition()); if(isTwoPane) {
NewsContentFragment newsContentFragment=(NewsContentFragment) getFragmentManager().findFragmentById(R.id.news_content_fragment); newsContentFragment.refresh(news.getTitle(),news.getContent()); } else {
NewsContentActivity.actionStart(getActivity(), news.getTitle(),news.getContent()); } } }); return holder; }
@Override public  void onBindViewHolder(ViewHolder holder,int position) {
News news=mNewList.get(position); holder.newsTitleText.setText(news.getTitle()); } @Override public int getItemCount() {
return mNewList.size(); } } } 最后向RecycleView中填充数据修改NewsTitleFragement中代码
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState) {
View view=inflater.inflate(R.layout.news_title_frag,container,false); RecyclerView newsTitleRecyclerView=(RecyclerView) view.findViewById(R.id.new_title_recycler_view); LinearLayoutManager layoutManager=new LinearLayoutManager(getActivity()); newsTitleRecyclerView.setLayoutManager(layoutManager); NewsAdapter adapter=new NewsAdapter(getNews()); newsTitleRecyclerView.setAdapter(adapter); return view; } private List
getNews() {
List
newsList=new ArrayList<>(); for(int i=1;i<=50;i++) {
News news=new News(); news.setTitle("This is news title"+i); news.setContent(getRandomLengthContent("This is news content"+"")); newsList.add(news); } return newsList; } public String getRandomLengthContent(String content) {
Random random=new Random(); int length=random.nextInt(20)+1; StringBuilder bulider=new StringBuilder(); for (int i=0;i
 
 
 

转载于:https://www.cnblogs.com/1521681359qqcom/p/10078389.html

你可能感兴趣的文章
Django之中间件
查看>>
博客作业05--查找
查看>>
SQL面试题目汇总
查看>>
为何img、input等内联元素可以设置宽、高
查看>>
Java知识总结---整合SpringMVC+Mybatis+Spring(二)
查看>>
android android:duplicateParentState=&quot;true&quot; &quot;false&quot;
查看>>
HDU 3507 Print Article (斜率优化)
查看>>
Web 设计师的 50 个超便利工具(下)
查看>>
C++底层数据结构实现
查看>>
Python学习(二)
查看>>
如何提高Linq查询的性能(上)
查看>>
敏捷开发相关编辑思想(SOA、DDD、REST、CQRS)
查看>>
Qt中mysql编译出错问题
查看>>
resin3服务器resin.conf文件的配置
查看>>
ubuntu下codeblocks编译出现libxxx.so needed by xxx.so not found
查看>>
effective C++ 条款 40:明智而审慎地使用多重继承
查看>>
三维渲染引擎设计与实践(五)
查看>>
20154313 刘文亨 EXP9
查看>>
快速排序
查看>>
Solidity的三种转账方式与比较
查看>>