fragment、ListFragment使用ListView及自定义Listview等初始化操作

两个Fragment包含Listview和Gridview左右手势滑动切换 本Demo的两个Fragment分别包含listview和gridview,左右滑动用GestureDetector手势监听;由于listview,gridview的滑动事件和左右滑动事件冲突,所以自定义listview和gridview让其优先执行自定义的左右滑动事件。 立即下载


fragment、ListFragment使用ListView及自定义Listview等初始化操作

1.先说一下 从官方api中说fragment碎片中使用Listview有专门的 ListView碎片-> ListFragment 而不能继承Fragment

 官方api相关连接:http://developer.android.com/guide/components/fragments.html

2.不废话直接上代码,这是我项目种的代码 2.1版本同样适用

父类封装:

  1. public class BaseListFragment extends ListFragment {  
  2.     public Map<String, String> map;  
  3.     public String tag = this.getClass().getSimpleName(); // tag 用于测试log用  
  4.     public Context context; // 存储上下文对象  
  5.     public Activity activity; // 存储上下文对象  
  6.       
  7.     @Override  
  8.     public void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         context = getActivity();  
  11.         activity = getActivity();  
  12.     }  
  13. }  
public class BaseListFragment extends ListFragment {
	public Map<String, String> map;
    public String tag = this.getClass().getSimpleName(); // tag 用于测试log用
	public Context context; // 存储上下文对象
	public Activity activity; // 存储上下文对象
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		context = getActivity();
		activity = getActivity();
	}
}

子类实现:

  1. /** 
  2.  * 新闻分类页面 
  3.  * @author chen 
  4.  * @date 2012-12-18 下午5:48:02 
  5.  */  
  6. public class NewsFragment extends BaseListFragment {  
  7.     /** 请求url */  
  8.     private String url;  
  9.     /** ListView */  
  10.     private PullListView mListView;  
  11. //  /** 分页 */  
  12. //  private Page page = new Page();  
  13.     /** 商铺适配器 */  
  14.     private Adapter mAdapter = new Adapter(activity);;  
  15.     /** 集合数据 */  
  16.     public ArrayList<News> mListData;  
  17.     /** 是否重新加载 */  
  18.     private boolean isClear;  
  19.       
  20.     private LayoutInflater mInflater;  
  21.     /** 新闻详细页面 url */  
  22.     private String detailUrl = C.http.http_news_detail;  
  23.       
  24.     public NewsFragment(){}  
  25.     public NewsFragment(Context context, String url) {  
  26.         this.context = context;  
  27.         this.url = url;  
  28.         mListData = null;  
  29.     }  
  30.       
  31.     @Override  
  32.     public void onCreate(Bundle savedInstanceState) {  
  33.         super.onCreate(savedInstanceState);  
  34.         Log.i(tag, "onCreate");  
  35.     }  
  36.       
  37.     // 加载多次  
  38.     public void onActivityCreated(Bundle savedInstanceState) {  
  39.         super.onActivityCreated(savedInstanceState);  
  40.         Log.i(tag, "onActivityCreated");  
  41.         mListView = (PullListView) getListView();//(ListView) activity.findViewById(android.R.id.list);  
  42.         if(mListData != null && mListData.size() > 0) {  
  43.             return;  
  44.         }  
  45.           
  46.         mListData = new ArrayList<News>();  
  47.         setListAdapter(mAdapter);  
  48.         mListView.onRefreshComplete();  
  49.         mListView.setonRefreshListener(new OnRefreshListener() {  
  50.             public void onRefresh() {  
  51.                 isClear = true;  
  52.                 // 初始化数据  
  53.                 AnsynHttpRequest.requestByGet(context, callbackData, R.string.http_news, url, true, true, true);  
  54.             }  
  55.         });  
  56.         // 初始化数据  
  57.         AnsynHttpRequest.requestByGet(context, callbackData, R.string.http_news, url, true, true, false);  
  58.     }  
  59.   
  60.     // 加载多次  
  61.     @Override  
  62.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  63.             Bundle savedInstanceState) {  
  64.         super.onCreateView(inflater, container, savedInstanceState);  
  65.         View view = inflater.inflate(R.layout.fragment_news_or_hotline, container, false);  
  66.         mInflater = inflater;  
  67.         Log.i(tag, "onCreateView");  
  68.         return view;  
  69.     }  
  70.     @Override  
  71.     public void onStart() {  
  72.         Log.i(tag, "onStart");  
  73.         super.onStart();  
  74.     }  
  75.     @Override  
  76.     public void onStop() {  
  77.         super.onStop();  
  78.         Log.i(tag, "onStop");  
  79.     }  
  80.     @Override  
  81.     public void onDestroy() {  
  82.         super.onDestroy();  
  83.         Log.i(tag, "onDestroy");  
  84.     }  
  85.       
  86.     /** 
  87.      * 异步回调回来并处理数据 
  88.      */  
  89.     private ObserverCallBack callbackData = new ObserverCallBack(){  
  90.         public void back(String data, int url) {  
  91.             Message msg = new Message();  
  92.             switch (url) {  
  93.             case R.string.http_news: // 解析主题信息数据  
  94.                 msg = new Message();  
  95.                 if(data == null) {  
  96.                     msg.what = 2;  
  97.                     mHandler.sendMessage(msg);  
  98.                     return;  
  99.                 }  
  100.                 try {  
  101.                     News news = new News();  
  102.                     ArrayList<News> dataInfo = news.getListInfo(data);  
  103.                     if(isClear) {  
  104.                         if(dataInfo != null && dataInfo.size()>0) mListData.clear();  
  105.                         isClear = false;  
  106.                     }  
  107.                       
  108.                     if(mListData != null && mListData.size() > 0)  
  109.                         msg.what = 1;  
  110.                     else  
  111.                         msg.what = 0;  
  112.                     if(dataInfo == null || dataInfo.size() == 0){  
  113.                         if( mListData != null && mListData.size() > 0){  
  114.                             msg = new Message();  
  115.                             msg.what = 2;  
  116.                             mHandler.sendMessage(msg);  
  117.                             return;  
  118.                         }  
  119.                     } else {  
  120.                         mListData.addAll(dataInfo);  
  121.                     }  
  122.                     mHandler.sendMessage(msg);  
  123.                 } catch (Exception e) {  
  124.                     e.printStackTrace();  
  125.                 }  
  126.                   
  127.                 break;  
  128.             case R.string.http_news_detail:  
  129.                 msg = new Message();  
  130.                 if(data == null) {  
  131.                     msg.what = 2;  
  132.                     mHandler.sendMessage(msg);  
  133.                     return;  
  134.                 }  
  135.                 try {  
  136.                     NewsDetail newsDetail = new NewsDetail();  
  137.                     newsDetail = newsDetail.getInfo(data, detailUrl);  
  138.                     msg.what = 3;  
  139.                     msg.obj = newsDetail;  
  140.                     if(newsDetail.content == null || newsDetail.content.length() == 0){  
  141.                         msg = new Message();  
  142.                         msg.what = 2;  
  143.                         mHandler.sendMessage(msg);  
  144.                         return;  
  145.                     }  
  146.                     mHandler.sendMessage(msg);  
  147.                 } catch (Exception e) {  
  148.                     msg = new Message();  
  149.                     msg.what = 2;  
  150.                     mHandler.sendMessage(msg);  
  151.                 }  
  152.                 break;  
  153.             default:  
  154.                 break;  
  155.             }  
  156.         };  
  157.     };  
  158.       
  159.     private Handler mHandler = new Handler(){  
  160.         @Override  
  161.         public void handleMessage(Message msg) {  
  162.             super.handleMessage(msg);  
  163.             switch (msg.what) {  
  164.             case 0:  
  165.                 mAdapter.notifyDataSetChanged();  
  166.                 mListView.onRefreshComplete();  
  167. //              if(mListData.size() == 0){  
  168. ////                    Toast.makeText(context, R.string.dialog_title_nowData, Toast.LENGTH_LONG).show();  
  169. //                    mListView.setVisibility(View.GONE);  
  170. //              } else mListView.setVisibility(View.VISIBLE);  
  171.                 break;  
  172.             case 1:  
  173.                 mAdapter.notifyDataSetChanged();  
  174. //              if(mListData.size() == 0){  
  175. ////                    Toast.makeText(context, R.string.dialog_title_nowData, Toast.LENGTH_LONG).show();  
  176. //                    mListView.setVisibility(View.GONE);  
  177. //              }else mListView.setVisibility(View.VISIBLE);  
  178.                 break;  
  179.             case 2:  
  180.                 Toast.makeText(context, R.string.no_data, Toast.LENGTH_LONG).show();  
  181.                 break;  
  182.             case 3:  
  183.                 NewsDetail newsDetail = (NewsDetail) msg.obj;  
  184.                 Intent intent = new Intent(context, NewsDetailActivity.class);  
  185.                 intent.putExtra("content", newsDetail.content);  
  186.                 intent.putExtra("hostUrl", newsDetail.hostUrl);  
  187.                 startActivity(intent);  
  188.                 break;  
  189.             default:  
  190.                 break;  
  191.             }  
  192.         }  
  193.     };  
  194.       
  195.     public final class ViewHolder {  
  196.         public TextView title;  
  197.         public TextView time;  
  198.     }  
  199.       
  200.     // 添加列表内容  
  201.     public class Adapter extends BaseAdapter {  
  202.         public Adapter(){}  
  203.         @Override  
  204.         public boolean areAllItemsEnabled() {  
  205.             return super.areAllItemsEnabled();  
  206.         }  
  207.           
  208.         public Adapter(Context context) {  
  209.         }  
  210.         @Override  
  211.         public int getCount() {  
  212.             return mListData.size();  
  213.         }  
  214.         @Override  
  215.         public Object getItem(int position) {  
  216.             return null;  
  217.         }  
  218.           
  219.         @Override  
  220.         public long getItemId(int position) {  
  221.             return position;  
  222.         }  
  223.   
  224.         @Override  
  225.         public View getView(final int position, View convertView,  
  226.                 ViewGroup parent) {  
  227.             final News news = mListData.get(position);  
  228.             ViewHolder holder = null;  
  229.             if (convertView == null) {  
  230.                 holder = new ViewHolder();  
  231.                 convertView = mInflater.inflate(R.layout.list_item_mian, null);  
  232.                 holder.title = (TextView) convertView.findViewById(R.id.list_main_txt_title);  
  233.                 holder.time = (TextView) convertView.findViewById(R.id.list_main_txt_time);  
  234.                 convertView.setTag(holder);  
  235.             } else {  
  236.                 holder = (ViewHolder) convertView.getTag();  
  237.             }  
  238.   
  239.             // 进行数据设置  
  240.             holder.title.setText(news.title);  
  241.             holder.time.setText(news.time);  
  242.             convertView.setOnClickListener(new OnClickListener() {  
  243.                 @Override  
  244.                 public void onClick(View v) { // 加载详细新闻  
  245.                     detailUrl = mListData.get(position).childUrl;  
  246.                     AnsynHttpRequest.requestByGet(context, callbackData, R.string.http_news_detail, detailUrl, true, true, false);  
  247.                 }  
  248.             });  
  249.             return convertView;  
  250.         }  
  251.     }  
  252. }  
保姆级教程:STK 11.0 从下载到安装成功(附Matlab互联配置与常见问题解决) 本文提供STK 11.0的完整安装指南,包括下载、安装步骤、Matlab互联配置及常见问题解决方案。详细介绍了系统要求核查、分步安装流程、关键文件替换和许可证配置,确保用户能够顺利完成STK 11.0的部署并实现与Matlab的无缝对接。 阅读详情

相关推荐

【问题解析】Matlab Function的易错点(Variable Size)

Matlab Function的易错点

CrazyRabbit的博客 9865

初始化和切换Fragment

初始化: /** 初始化Fragment并将Fragment添加到fragments中,此处的fragments是一个Fragment的列表 private List<Fragment> fragments; */ private void initFragments() { fragments = new ArrayList<...

冰之沁泠的博客 1520

银河麒麟V10ServerSP3中安装Nacos2.4.x详细教程

银河麒麟V10ServerSP3中安装Nacos2.4.x详细教程

yuanjinshenglife的专栏 1301

android 在fragment中使用listview,android,在fragment中使用listview,不使用listfragment

public class LeftFragment extends Fragment{private ListView listView;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view = inflater.inf...

weixin_33881426的博客 1724

Hypermesh二次开发实战:从Tcl/Tk脚本到Ext API的进阶之路

本文系统介绍了Hypermesh二次开发的进阶路径,从自动化重复操作的Tcl/Tk脚本入门,到利用HMASCII接口深度读写模型数据,最终深入Ext API进行高性能计算与功能定制。通过实战案例,帮助工程师掌握从脚本录制到C++插件开发的完整技能,显著提升CAE前处理效率与自动化水平。

weixin_29306875的博客 670

OnePose++: Keypoint-Free One-Shot Object Pose Estimation without CAD Models

算法:首先采用LoFTR的细匹配模块,将粗匹配点周围的小窗口内,通过对比特征找到最相似的位置,细化当前特征点的位置。算法:PnP算法,利用3D点和2D投影点的对应关系,计算相机相对于物体的6D姿态(位置朝向)。算法:使用COLMAP,对2D粗匹配对(不依赖传统关键点匹配)进行特征轨迹计算并生成半稠密点云,每个3D点包含坐标和对应的2D投影点。算法:LoFTR粗匹配模块,将每一个像素点视为伪关键点,生成半稠密的2D匹配对。输入:优化后的3D、当前视图的2D特征点。输出:粗半稠密点云以及物体的特征轨迹。

雨落倾城的博客 885

android的fragment添加列表,Android之listfragment的使用例子

1、fragment简介我对fragment的理解是基于activity的,对于大多数的基本开始发时,我们最先遇到的就是用activity来开发。简单的例子,新建一个最基本的Android空白界面,我们得到的是一个可以显示一个空白界面的app。一个activity对应着一个layout。但是fragment则是基于activity,突破了已经固定好的layout的限制,在原有的layout中,把布...

weixin_30231327的博客 2631

让 VK31 的条件维护树长出你想要的分支:用 ABAP SE43 扩展定价 Area Menu COND_AV

摘要:本文深入解析了SAP系统中价格条件维护(VK31/VK32)的菜单结构优化方法。通过分析Area Menu(COND_AV)的三层架构(菜单对象、节点、报表),提出将业务语言融入菜单设计的解决方案。重点介绍了使用SE43事务码扩展标准菜单的具体步骤:创建Enhancement ID、新增业务节点、挂接定价报表,并强调需同步验证条件表映射关系。文章还提供了常见问题排查思路,建议从岗位视角重构菜单结构,最终实现高效、精准且符合业务语义的价格维护入口体系。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 87

Fragment中加载ListView问题

Fragment作为Activity的片段,在安卓开发中被使用的频率非常高,同时ListView作为最常用的控件,因此在Fragment中加载ListView也是非常常用的,下面介绍一下具体的Fragment中加载ListView的步骤: 1)定义一个继承自ListFragment的Fragment(TestFragment); 2)在xml中,要加载的ListView的id必须设置为

github_35275391的博客 3103

工程测量不用愁,120个视频动画帮你忙,简单易学直观明了!

工程测量不用愁,120个视频动画帮你忙,简单易学直观明了!文末提供下载地址。 下载地址: 链接:https://pan.baidu.com/s/11S6XDq9Eaa3DG3VKRMBIPg

智慧空间实验室 1019

【JTAG】1149.6协议详解

JTAG1149.6协议是1149.1协议中Boundary-Scan结构的扩展,1149.1对交流耦合、差分或两者兼有的情况并没有得到充分的处理。该协议支持新的I/O测试结构。需要时变(AC)信号的高级I/O引脚允许测试它们之间的连接,这包括所有差分信号引脚或单端信号引脚,通过设计支持交流耦合。..................

xuhe0206的博客 4574

android,在fragment中使用listview,不使用listfragment

public class LeftFragment extends Fragment{ private ListView listView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = ...

weixin_33730836的博客 305

《Python全栈系列教程》专栏介绍及文章汇总

《Python全栈系列教程》专栏介绍及文章汇总

孤寒者的博客 71万+

android之ListFragment

FragmentList.java代码如下: package com.example.p.player; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.app.ListFragment; i

qslxh的专栏 433

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android API之ListFragment

ListFragment的用法简述 ListFragment是专门用来展示列表数据的,内部集成了一个ListView,用法非常简单,与ListActivity一致,示例代码如下: public class ListFragmentDemo extends ListFragment { String[] citys = new String[] { "广东", "上海", "贵州",

王梵 698

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ListFragment 使用ListView and 自定义Adapter

在开发过程中经常使用Tabs + ListFragment 作为表现形式。 ListFragment 中加入ListView显示方式很容易。 [java]view plaincopy packageproject.animalsound; importandroid.app.ListFragmen...

weixin_30550271的博客 72

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ListFragment

ListFragment setListAdapter(adapter) onListItemClick() getFragmentManager() 小技术:如何让选择项变色 android:background="?android:attr/activatedBackgroundIndicator" 设置ListView为单选模式 getListView().se

新火燎塬的博客 366
上一篇: 使用ListView的Fragment
下一篇: SharedPreferences的设置保存
走丢的猫
博客等级 码龄15年 4粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值