fragment、ListFragment使用ListView及自定义Listview等初始化操作
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等初始化操作的更多相关文章
- Android 自定义ListView
本文讲实现一个自定义列表的Android程序,程序将实现一个使用自定义的适配器(Adapter)绑定 数据,通过contextView.setTag绑定数据有按钮的ListView. 系统显示列表(L ...
- Android之自定义ListView(一)
PS:自定义View是Android中高手进阶的路线.因此我也打算一步一步的学习.看了鸿洋和郭霖这两位大牛的博客,决定一步一步的学习,循序渐进. 学习内容: 1.自定义View实现ListView的I ...
- android代码优化----ListView中自定义adapter的封装(ListView的模板写法)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 细解ListView之自定义适配器
下面我们将以一个例子来讲述ListView之自定义适配器 首先我们看一下效果图: [分析] 首先:需要创建一个ListView控件,自定义适配器是为了实现自定义ListView的ListView_It ...
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...
- Android -- ListView(SimpleAdapter) 自定义适配器
aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA ...
- 淘宝(阿里百川)手机客户端开发日记第四篇 自定义ListView详解
我们知道,如果采用官方的ListView,实现的功能在很多时候,并不能满足自己的业务需求,比如在设计到复杂的列表的时候,这一节,我们就开始动手自己实现自定义的ListView. 在上一节中,我们采用了 ...
- 深入理解自定义ListView
深入理解自定义ListView ListView原理 他是一个系统的原生控件,用列表的形式来显示内容.如果内容过过有1000条左右,我们可以通过手势的上下滑动来查看数据.ListView也不是爆出OO ...
- [置顶] android 自定义ListView实现动画特效
通过自定义ListView实现动画特效,被点击元素A向前移,A之前元素往后移动. 重点在于动画的实现: 具体代码如下: package com.open.widget; import java.uti ...
随机推荐
- 【转载】Java线程面试题 Top 50
Java线程面试题 Top 50 2014/08/21 | 分类: 基础技术 | 4 条评论 | 标签: 多线程, 面试题 分享到:140 本文由 ImportNew - 李 广 翻译自 javare ...
- 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)
java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...
- 获取当前url并指定url中的字符 效果
效果介绍:1.获取当前url 2.通过获取的url,找到指定的字符并判断 3.如果是指定字符,页面跳转到博客园:如果不是页面跳转到百度 例如:http://www.cnblogs.com/fs521c ...
- Amazon MWS 上传数据 (二) 构造请求
上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同:这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的 ...
- 识别Json字符串并分隔成Map集合
识别Json字符串并分隔成Map集合 前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新 ...
- 本地拦截genymotion或者Android模拟器的网络请求
我们在主机上面运行了Burp或者fiddler,那么代理已经监听在本机的8080端口了. 那么我们需要在模拟器中进行如下设置: 1.在设置中,长按当前连接的wifi网络,弹出如下: 2. 点击修改网络 ...
- xlslib库使用简记
xlslib库使用简记 1 前言 最近需要使用C++结合xlslib库来生成Excel文件,但发现这个库的文档还真难找,找来找去发现唯一的线索是有一个test/目录里面的几个例子而已. 想到以后要不断 ...
- 2014第11周一word样式
今天摸索使用了word的样式替换功能感觉不错,简单记录下: 1.将某一个样式的标题统一替换为另一样式,之前一般是格式化一个个找到标题设置格式, 今天才发现可以选中标题->在浮动框上单击样式或开始 ...
- LDA Gibbs Sampling
注意:$\alpha$和$\beta$已知,常用为(和LDA EM算法不同) 1. 为什么可用 LDA模型求解的目标为得到$\phi$和$\theta$ 假设现在已知每个单词对应的主题$z$,则可 ...
- hdu 5578 Friendship of Frog(multiset的应用)
Problem Description N frogs . Two frogs are friends if they come from the same country. The closest ...