Fragment实现左右新闻列表和详情
来源:互联网 发布:单一数据粒度 编辑:程序博客网 时间:2024/06/07 06:49
Fragment的使用,类似于新闻详情页面。点击左边fragment的listview,右边的fragment显示当前选中的内容。在这里实现主要使用监听。
在一些情况下,你可能需要fragment与activity共享事件。这样做的一个好方法是在fragment内部定义一个回调接口,并需要宿主activity实现它。当activity通过接口接收到回调时,可以在必要时与布局中的其它fragment共享信息。
举个例子,如果新闻应用的actvity中有两个fragment——一个显示文章列表(fragment A),另一个显示一篇文章(fragment B)——然后fragment A 必须要告诉activity列表项何时被选种,这样,activity可以通知fragment B显示这篇文章。这种情况下,在fragment A内部声明接口
首先:
public interface MyListener{ void onListener(String str); }
然后:
fragment的宿主activity实现了OnArticleSelectedListener接口,并且重写onArticleSelected()以通知fragment B来自于fragment A的事件。为了确保宿主activity实现了这个接口,fragment A的onAttach()回调函数(当添加fragment到activity中时系统会调用它)通过作为参数传入onAttach()的activity的类型转换来实例化一个MyListener实例。
@Override public void onAttach(Activity activity) { super.onAttach(activity); try{ myListener= (MyListener) activity; }catch (ClassCastException e){ throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener"); } }
最后在点击listview的条目时设置监听事件:
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String str= (String) arrayList.get(position); myListener.onListener(str); }
1、在activity中代码
package com.example.administrator.myapplication;import android.os.Bundle;import android.support.v4.app.FragmentManager;import android.support.v7.app.AppCompatActivity;import fragment.MyLeftFragment;import fragment.MyRightFragment;public class MainActivity extends AppCompatActivity implements MyLeftFragment.MyListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onListener(String str) { FragmentManager fragmentManager=getSupportFragmentManager(); MyRightFragment myRightFragment= (MyRightFragment) fragmentManager.findFragmentById(R.id.fragment_right); myRightFragment.setText(str); }}
2、左边列表代码
public class MyLeftFragment extends Fragment implements AdapterView.OnItemClickListener { private ListView listView; private View view; private ArrayList arrayList; private MyAdapter adapter; public MyListener myListener; //定义接口,为了实现监听; public interface MyListener{ void onListener(String str); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String str= (String) arrayList.get(position); //把监听设置给点击事件 myListener.onListener(str); } //一定要重写这个方法,为了保证activity实现这个接口,通过作为参数onAttch()类型转换成OnListener()的一个实例 @Override public void onAttach(Activity activity) { super.onAttach(activity); try{ myListener= (MyListener) activity; }catch (ClassCastException e){ throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener"); } } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view=inflater.inflate(R.layout.fragment_left,null); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); listView= (ListView) view.findViewById(R.id.listview); arrayList=new ArrayList(); init(); adapter=new MyAdapter(getActivity(),arrayList); listView.setAdapter(adapter); listView.setOnItemClickListener(this); } private void init() { for(int i=0;i<20;i++){ arrayList.add("我是item"+i); } }}
3、右边详情代码
package fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.example.administrator.myapplication.R;/** * Created by Administrator on 2016/4/19. */public class MyRightFragment extends Fragment { View view; TextView textView; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view=inflater.inflate(R.layout.fragment_right,null); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); textView= (TextView) view.findViewById(R.id.text); } public void setText(String str){ textView.setText(str); }}
demo下载地址:http://download.csdn.net/detail/androidxiaogang/9511303
- Fragment实现左右新闻列表和详情
- thinkphp 路由实现列表和详情
- 如何实现新闻详情页面
- Fragment实现更新新闻列表功能(ListFragment)
- Fragment实例精讲——新闻(购物)类App列表Fragment的简单实现
- Android例子—Fragment实例讲解—新闻(购物)类App列表Fragment的简单实现
- 网易新闻详情页排版实现思路
- 新闻列表中标题和日期的左右分别对齐的几种处理方法
- 新闻列表中标题和日期的左右分别对齐的几种处理方法
- swift 新闻列表实现
- BottomNavigationView + ViewPager + Fragment 实现左右滑动和下方导航栏
- Fragment实现列表和内容联动
- ExpandListview应用(实现二级列表和实现新闻分类)
- 新闻详情页查看大图列表以及保存图片
- Fragment+ViewPager实现左右滑动
- Android:详情界面左右滑动看更多,ViewPager动态添加Fragment,仿51job详情界面
- ViewPager+Fragment+ListView打造新闻列表
- Jq和JS实现下拉列表左右选择(时间)
- typeof
- <转>HttpClient和HttpURLConnection的区别
- Hibernate中映射文件*.hbm.xml中type="date"和不写type="date"的区别?
- 网络字节序,大端机,小端机
- ios 音视频处理优化总结
- Fragment实现左右新闻列表和详情
- Java之关键字
- 浅谈JS的包装对象
- Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-2.5.xsd).
- 电子相册系统介绍
- 图片的三级缓存(手动)实现步骤
- LeetCode - Power of Four
- php命名空间之前咋办
- Android知识体系结构