加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2012-12-31 13:46:59)
标签:

fragment使用listview

fragment自定义listvi

教育

分类: android开发日常笔记

 

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

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

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

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

父类封装:

 

[java] view plaincopy
  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.  

子类实现:

 

 

[java] view plaincopy
  1.   
  2. public class NewsFragment extends BaseListFragment  
  3.       
  4.     private String url;  
  5.       
  6.     private PullListView mListView;  
  7. //    
  8. //  private Page page new Page();  
  9.       
  10.     private Adapter mAdapter new Adapter(activity);;  
  11.       
  12.     public ArrayList<News> mListData;  
  13.       
  14.     private boolean isClear;  
  15.       
  16.     private LayoutInflater mInflater;  
  17.       
  18.     private String detailUrl C.http.http_news_detail;  
  19.       
  20.     public NewsFragment(){}  
  21.     public NewsFragment(Context context, String url)  
  22.         this.context context;  
  23.         this.url url;  
  24.         mListData null 
  25.      
  26.       
  27.     @Override  
  28.     public void onCreate(Bundle savedInstanceState)  
  29.         super.onCreate(savedInstanceState);  
  30.         Log.i(tag, "onCreate");  
  31.      
  32.       
  33.     // 加载多次  
  34.     public void onActivityCreated(Bundle savedInstanceState)  
  35.         super.onActivityCreated(savedInstanceState);  
  36.         Log.i(tag, "onActivityCreated");  
  37.         mListView (PullListView) getListView();//(ListView) activity.findViewById(android.R.id.list);  
  38.         if(mListData != null && mListData.size() 0 
  39.             return 
  40.          
  41.           
  42.         mListData new ArrayList<News>();  
  43.         setListAdapter(mAdapter);  
  44.         mListView.onRefreshComplete();  
  45.         mListView.setonRefreshListener(new OnRefreshListener()  
  46.             public void onRefresh()  
  47.                 isClear true 
  48.                 // 初始化数据  
  49.                 AnsynHttpRequest.requestByGet(context, callbackData, R.string.http_news, url, truetruetrue);  
  50.              
  51.         });  
  52.         // 初始化数据  
  53.         AnsynHttpRequest.requestByGet(context, callbackData, R.string.http_news, url, truetruefalse);  
  54.      
  55.   
  56.     // 加载多次  
  57.     @Override  
  58.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  59.             Bundle savedInstanceState)  
  60.         super.onCreateView(inflater, container, savedInstanceState);  
  61.         View view inflater.inflate(R.layout.fragment_news_or_hotline, container, false);  
  62.         mInflater inflater;  
  63.         Log.i(tag, "onCreateView");  
  64.         return view;  
  65.      
  66.     @Override  
  67.     public void onStart()  
  68.         Log.i(tag, "onStart");  
  69.         super.onStart();  
  70.      
  71.     @Override  
  72.     public void onStop()  
  73.         super.onStop();  
  74.         Log.i(tag, "onStop");  
  75.      
  76.     @Override  
  77.     public void onDestroy()  
  78.         super.onDestroy();  
  79.         Log.i(tag, "onDestroy");  
  80.      
  81.       
  82.       
  83.     private ObserverCallBack callbackData new ObserverCallBack(){  
  84.         public void back(String data, int url)  
  85.             Message msg new Message();  
  86.             switch (url)  
  87.             case R.string.http_news: // 解析主题信息数据  
  88.                 msg new Message();  
  89.                 if(data == null 
  90.                     msg.what 2 
  91.                     mHandler.sendMessage(msg);  
  92.                     return 
  93.                  
  94.                 try  
  95.                     News news new News();  
  96.                     ArrayList<News> dataInfo news.getListInfo(data);  
  97.                     if(isClear)  
  98.                         if(dataInfo != null && dataInfo.size()>0mListData.clear();  
  99.                         isClear false 
  100.                      
  101.                       
  102.                     if(mListData != null && mListData.size() 0 
  103.                         msg.what 1 
  104.                     else  
  105.                         msg.what 0 
  106.                     if(dataInfo == null || dataInfo.size() == 0){  
  107.                         ifmListData != null && mListData.size() 0){  
  108.                             msg new Message();  
  109.                             msg.what 2 
  110.                             mHandler.sendMessage(msg);  
  111.                             return 
  112.                          
  113.                     else  
  114.                         mListData.addAll(dataInfo);  
  115.                      
  116.                     mHandler.sendMessage(msg);  
  117.                 catch (Exception e)  
  118.                     e.printStackTrace();  
  119.                  
  120.                   
  121.                 break 
  122.             case R.string.http_news_detail:  
  123.                 msg new Message();  
  124.                 if(data == null 
  125.                     msg.what 2 
  126.                     mHandler.sendMessage(msg);  
  127.                     return 
  128.                  
  129.                 try  
  130.                     NewsDetail newsDetail new NewsDetail();  
  131.                     newsDetail newsDetail.getInfo(data, detailUrl);  
  132.                     msg.what 3 
  133.                     msg.obj newsDetail;  
  134.                     if(newsDetail.content == null || newsDetail.content.length() == 0){  
  135.                         msg new Message();  
  136.                         msg.what 2 
  137.                         mHandler.sendMessage(msg);  
  138.                         return 
  139.                      
  140.                     mHandler.sendMessage(msg);  
  141.                 catch (Exception e)  
  142.                     msg new Message();  
  143.                     msg.what 2 
  144.                     mHandler.sendMessage(msg);  
  145.                  
  146.                 break 
  147.             default 
  148.                 break 
  149.              
  150.         };  
  151.     };  
  152.       
  153.     private Handler mHandler new Handler(){  
  154.         @Override  
  155.         public void handleMessage(Message msg)  
  156.             super.handleMessage(msg);  
  157.             switch (msg.what)  
  158.             case 0 
  159.                 mAdapter.notifyDataSetChanged();  
  160.                 mListView.onRefreshComplete();  
  161. //              if(mListData.size() == 0){  
  162. ////                    Toast.makeText(context, R.string.dialog_title_nowData, Toast.LENGTH_LONG).show();  
  163. //                    mListView.setVisibility(View.GONE);  
  164. //              else mListView.setVisibility(View.VISIBLE);  
  165.                 break 
  166.             case 1 
  167.                 mAdapter.notifyDataSetChanged();  
  168. //              if(mListData.size() == 0){  
  169. ////                    Toast.makeText(context, R.string.dialog_title_nowData, Toast.LENGTH_LONG).show();  
  170. //                    mListView.setVisibility(View.GONE);  
  171. //              }else mListView.setVisibility(View.VISIBLE);  
  172.                 break 
  173.             case 2 
  174.                 Toast.makeText(context, R.string.no_data, Toast.LENGTH_LONG).show();  
  175.                 break 
  176.             case 3 
  177.                 NewsDetail newsDetail (NewsDetail) msg.obj;  
  178.                 Intent intent new Intent(context, NewsDetailActivity.class);  
  179.                 intent.putExtra("content"newsDetail.content);  
  180.                 intent.putExtra("hostUrl"newsDetail.hostUrl);  
  181.                 startActivity(intent);  
  182.                 break 
  183.             default 
  184.                 break 
  185.              
  186.          
  187.     };  
  188.       
  189.     public final class ViewHolder  
  190.         public TextView title;  
  191.         public TextView time;  
  192.      
  193.       
  194.     // 添加列表内容  
  195.     public class Adapter extends BaseAdapter  
  196.         public Adapter(){}  
  197.         @Override  
  198.         public boolean areAllItemsEnabled()  
  199.             return super.areAllItemsEnabled();  
  200.          
  201.           
  202.         public Adapter(Context context)  
  203.          
  204.         @Override  
  205.         public int getCount()  
  206.             return mListData.size();  
  207.          
  208.         @Override  
  209.         public Object getItem(int position)  
  210.             return null 
  211.          
  212.           
  213.         @Override  
  214.         public long getItemId(int position)  
  215.             return position;  
  216.          
  217.   
  218.         @Override  
  219.         public View getView(final int position, View convertView,  
  220.                 ViewGroup parent)  
  221.             final News news mListData.get(position);  
  222.             ViewHolder holder null 
  223.             if (convertView == null 
  224.                 holder new ViewHolder();  
  225.                 convertView mInflater.inflate(R.layout.list_item_mian, null);  
  226.                 holder.title (TextView) convertView.findViewById(R.id.list_main_txt_title);  
  227.                 holder.time (TextView) convertView.findViewById(R.id.list_main_txt_time);  
  228.                 convertView.setTag(holder);  
  229.             else  
  230.                 holder (ViewHolder) convertView.getTag();  
  231.              
  232.   
  233.             // 进行数据设置  
  234.             holder.title.setText(news.title);  
  235.             holder.time.setText(news.time);  
  236.             convertView.setOnClickListener(new OnClickListener()  
  237.                 @Override  
  238.                 public void onClick(View v) // 加载详细新闻  
  239.                     detailUrl mListData.get(position).childUrl;  
  240.                     AnsynHttpRequest.requestByGet(context, callbackData, R.string.http_news_detail, detailUrl, truetruefalse);  
  241.                  
  242.             });  
  243.             return convertView;  
  244.          
  245.      
  246.  

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有