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

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

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

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

父类封装:

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();
}
}

子类实现:

/**
* 新闻分类页面
* @author chen
* @date 2012-12-18 下午5:48:02
*/
public class NewsFragment extends BaseListFragment {
/** 请求url */
private String url;
/** ListView */
private PullListView mListView;
// /** 分页 */
// private Page page = new Page();
/** 商铺适配器 */
private Adapter mAdapter = new Adapter(activity);;
/** 集合数据 */
public ArrayList<News> mListData;
/** 是否重新加载 */
private boolean isClear; private LayoutInflater mInflater;
/** 新闻详细页面 url */
private String detailUrl = C.http.http_news_detail; public NewsFragment(){}
public NewsFragment(Context context, String url) {
this.context = context;
this.url = url;
mListData = null;
} @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(tag, "onCreate");
} // 加载多次
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.i(tag, "onActivityCreated");
mListView = (PullListView) getListView();//(ListView) activity.findViewById(android.R.id.list);
if(mListData != null && mListData.size() > ) {
return;
} mListData = new ArrayList<News>();
setListAdapter(mAdapter);
mListView.onRefreshComplete();
mListView.setonRefreshListener(new OnRefreshListener() {
public void onRefresh() {
isClear = true;
// 初始化数据
AnsynHttpRequest.requestByGet(context, callbackData, R.string.http_news, url, true, true, true);
}
});
// 初始化数据
AnsynHttpRequest.requestByGet(context, callbackData, R.string.http_news, url, true, true, false);
} // 加载多次
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fragment_news_or_hotline, container, false);
mInflater = inflater;
Log.i(tag, "onCreateView");
return view;
}
@Override
public void onStart() {
Log.i(tag, "onStart");
super.onStart();
}
@Override
public void onStop() {
super.onStop();
Log.i(tag, "onStop");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i(tag, "onDestroy");
} /**
* 异步回调回来并处理数据
*/
private ObserverCallBack callbackData = new ObserverCallBack(){
public void back(String data, int url) {
Message msg = new Message();
switch (url) {
case R.string.http_news: // 解析主题信息数据
msg = new Message();
if(data == null) {
msg.what = ;
mHandler.sendMessage(msg);
return;
}
try {
News news = new News();
ArrayList<News> dataInfo = news.getListInfo(data);
if(isClear) {
if(dataInfo != null && dataInfo.size()>) mListData.clear();
isClear = false;
} if(mListData != null && mListData.size() > )
msg.what = ;
else
msg.what = ;
if(dataInfo == null || dataInfo.size() == ){
if( mListData != null && mListData.size() > ){
msg = new Message();
msg.what = ;
mHandler.sendMessage(msg);
return;
}
} else {
mListData.addAll(dataInfo);
}
mHandler.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
} break;
case R.string.http_news_detail:
msg = new Message();
if(data == null) {
msg.what = ;
mHandler.sendMessage(msg);
return;
}
try {
NewsDetail newsDetail = new NewsDetail();
newsDetail = newsDetail.getInfo(data, detailUrl);
msg.what = ;
msg.obj = newsDetail;
if(newsDetail.content == null || newsDetail.content.length() == ){
msg = new Message();
msg.what = ;
mHandler.sendMessage(msg);
return;
}
mHandler.sendMessage(msg);
} catch (Exception e) {
msg = new Message();
msg.what = ;
mHandler.sendMessage(msg);
}
break;
default:
break;
}
};
}; private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case :
mAdapter.notifyDataSetChanged();
mListView.onRefreshComplete();
// if(mListData.size() == 0){
//// Toast.makeText(context, R.string.dialog_title_nowData, Toast.LENGTH_LONG).show();
// mListView.setVisibility(View.GONE);
// } else mListView.setVisibility(View.VISIBLE);
break;
case :
mAdapter.notifyDataSetChanged();
// if(mListData.size() == 0){
//// Toast.makeText(context, R.string.dialog_title_nowData, Toast.LENGTH_LONG).show();
// mListView.setVisibility(View.GONE);
// }else mListView.setVisibility(View.VISIBLE);
break;
case :
Toast.makeText(context, R.string.no_data, Toast.LENGTH_LONG).show();
break;
case :
NewsDetail newsDetail = (NewsDetail) msg.obj;
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.putExtra("content", newsDetail.content);
intent.putExtra("hostUrl", newsDetail.hostUrl);
startActivity(intent);
break;
default:
break;
}
}
}; public final class ViewHolder {
public TextView title;
public TextView time;
} // 添加列表内容
public class Adapter extends BaseAdapter {
public Adapter(){}
@Override
public boolean areAllItemsEnabled() {
return super.areAllItemsEnabled();
} public Adapter(Context context) {
}
@Override
public int getCount() {
return mListData.size();
}
@Override
public Object getItem(int position) {
return null;
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(final int position, View convertView,
ViewGroup parent) {
final News news = mListData.get(position);
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list_item_mian, null);
holder.title = (TextView) convertView.findViewById(R.id.list_main_txt_title);
holder.time = (TextView) convertView.findViewById(R.id.list_main_txt_time);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
} // 进行数据设置
holder.title.setText(news.title);
holder.time.setText(news.time);
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) { // 加载详细新闻
detailUrl = mListData.get(position).childUrl;
AnsynHttpRequest.requestByGet(context, callbackData, R.string.http_news_detail, detailUrl, true, true, false);
}
});
return convertView;
}
}
}

layout 如下:里面引用的是网上找的自定义下拉上啦刷新 可自行去找

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <com.vv.apps.hua.app.base.view.PullListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="@color/transparent"
android:divider="@null"
android:dividerHeight="0dp"
android:fastScrollEnabled="true"
android:focusable="true"
/> </LinearLayout>

fragment、ListFragment使用ListView及自定义Listview等初始化操作的更多相关文章

  1. Android 自定义ListView

    本文讲实现一个自定义列表的Android程序,程序将实现一个使用自定义的适配器(Adapter)绑定 数据,通过contextView.setTag绑定数据有按钮的ListView. 系统显示列表(L ...

  2. Android之自定义ListView(一)

    PS:自定义View是Android中高手进阶的路线.因此我也打算一步一步的学习.看了鸿洋和郭霖这两位大牛的博客,决定一步一步的学习,循序渐进. 学习内容: 1.自定义View实现ListView的I ...

  3. android代码优化----ListView中自定义adapter的封装(ListView的模板写法)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. 细解ListView之自定义适配器

    下面我们将以一个例子来讲述ListView之自定义适配器 首先我们看一下效果图: [分析] 首先:需要创建一个ListView控件,自定义适配器是为了实现自定义ListView的ListView_It ...

  5. 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

    1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...

  6. Android -- ListView(SimpleAdapter) 自定义适配器

    aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA ...

  7. 淘宝(阿里百川)手机客户端开发日记第四篇 自定义ListView详解

    我们知道,如果采用官方的ListView,实现的功能在很多时候,并不能满足自己的业务需求,比如在设计到复杂的列表的时候,这一节,我们就开始动手自己实现自定义的ListView. 在上一节中,我们采用了 ...

  8. 深入理解自定义ListView

    深入理解自定义ListView ListView原理 他是一个系统的原生控件,用列表的形式来显示内容.如果内容过过有1000条左右,我们可以通过手势的上下滑动来查看数据.ListView也不是爆出OO ...

  9. [置顶] android 自定义ListView实现动画特效

    通过自定义ListView实现动画特效,被点击元素A向前移,A之前元素往后移动. 重点在于动画的实现: 具体代码如下: package com.open.widget; import java.uti ...

随机推荐

  1. c++多线程参数的传递

    #include <iostream> #include <pthread.h> //多线程相关操作头文件,可移植众多平台 using namespace std; struc ...

  2. 分享个人如何DIY网站的经验

    对于一个接触过Web开发的IT人来说,一般都考虑过创建属于自己的网站,可能是定制自己特有风格的博客类网站,可能是私密的个人主页,也可能是展示自己开源工具的网站,当然,酝酿着做个商业网站来创业的人肯定也 ...

  3. 关于const限定符

    1.  指向非常量数据的非常量指针 具有最高的数据访问极限 .不包含const关键字. 2. 指向常量数据的非常量指针 指针可以被改写,使其指向相应类型的任何数据项, 但是它所指向的数据项的值是不能被 ...

  4. MVC 返回ActionResult 类型

    1. Content() 返回文本类型,比如"Hello World!". 2.File() 返回文件类型,如PDF,JPG. 3.HttpNotFound() 返回404 HTT ...

  5. Delphi RichEdit的内容保存为图片

    uses RichEdit; {将RichEdit1的内容保存为图片,此函数也适合于RxRichEdit,即RichEdit: TRxRichEdit}procedure RichEditToCanv ...

  6. docker 数据管理3

    实际应用: 第一个容器使用: docker run -itd -v /data/:/data1 centos  bash // -v 用来指定挂载目录, 后面的容器使用之前的容器数据卷 docker: ...

  7. [转]Net Framework引路蜂地图开发示例

    From:http://www.2cto.com/kf/201207/140421.html 引路蜂地图也提供对.Net Framework平台的支持,可以开发桌面地图应用,由于Mono C#的跨平台 ...

  8. 全国计算机等级考试二级教程-C语言程序设计_第13章_编译预处理和动态存储分配

    free(p);//释放内存 p = NULL;//软件工程规范,释放内存以后,指针应该赋值为空 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h ...

  9. 一封在JSP课程结束之后给学生的信

    <JSP应用程序设计>这门课终于考完了,虽然题目有点难,但我看大部分同学考的还可以,算上平时成绩应该都能拿到一个满意的分数. 再次感谢大家一个学期来对我的支持,跟大家一起的这个学期很开心, ...

  10. document.body is null

    document.body is null:做前端的同学们对这个错误应该不陌生吧 出现这个问题的原因是:你太着急了,document还没渲染到body呢,你就想调用了,当然会找不到了 解决办法so e ...