【Android】ListView内数据的动态追加

来源:互联网 发布:内存泄露java 编辑:程序博客网 时间:2024/05/27 00:48
 3232人阅读 评论(4) 收藏 举报
androidlistview动态追加分页

目录(?)[+]

设计思路

把置入适配器的list追加数据记录,再使用适配器的notifyDataSetChanged()刷新。

方法案例

以http://blog.csdn.net/jueblog/article/details/12114513的ListView为例,对Activity作如下改进。
[java] view plaincopy
  1. package com.app.test01;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6.   
  7. import org.json.JSONArray;  
  8. import org.json.JSONException;  
  9. import org.json.JSONObject;  
  10.   
  11. import android.R.integer;  
  12. import android.app.Activity;  
  13. import android.os.Bundle;  
  14. import android.view.ContextMenu;  
  15. import android.view.LayoutInflater;  
  16. import android.view.MenuItem;  
  17. import android.view.View;  
  18. import android.view.ContextMenu.ContextMenuInfo;  
  19. import android.widget.AbsListView;  
  20. import android.widget.AbsListView.OnScrollListener;  
  21. import android.widget.AdapterView;  
  22. import android.widget.AdapterView.AdapterContextMenuInfo;  
  23. import android.widget.BaseAdapter;  
  24. import android.widget.ListView;  
  25. import android.widget.TextView;  
  26. import android.widget.Toast;  
  27.   
  28. import com.app.adapter.MyWeixinJSON;  
  29. import com.app.adapter.MyWeixinList;  
  30.   
  31. /** 
  32.  * 点击  追加数据的ListView 
  33.  * @author 402-9 
  34.  * 
  35.  */  
  36. public class ListViewPage extends Activity {  
  37.     private ListView lv;  
  38.     private BaseAdapter mJson;  
  39.     private JSONArray mData = new JSONArray();// JSON数据源  
  40.     private View view_page_footer;// 底部视图  
  41.     private int num = 1;// 加载数据计数  
  42.     private int count = 50;// 总数据  
  43.   
  44.       
  45. //  private boolean flag;  
  46.     @Override  
  47.     protected void onCreate(Bundle savedInstanceState) {  
  48.         // TODO Auto-generated method stub  
  49.         super.onCreate(savedInstanceState);  
  50.         setContentView(R.layout.weixin);  
  51.         lv = (ListView) findViewById(R.id.lv);  
  52.         getJSONArray(mData);  
  53.           
  54.         mJson = new MyWeixinJSON(mData, this);  
  55.   
  56.         view_page_footer = LayoutInflater.from(this).inflate(  
  57.                 R.layout.view_page_footer, null);  
  58.         lv.addFooterView(view_page_footer);// 添加底部视图  
  59.         TextView text_page = (TextView) view_page_footer.findViewById(R.id.text_page);  
  60.         text_page.setOnClickListener(new View.OnClickListener() {  
  61.             // 点击按钮 追加数据 并通知适配器  
  62.             @Override  
  63.             public void onClick(View v) {  
  64.                 // TODO Auto-generated method stub  
  65.                 TextView tv = (TextView) v;  
  66.                 tv.setText("正在加载中...");  
  67.                 getJSONArray(mData);  
  68.                 tv.setText("下一页");  
  69.                 mJson.notifyDataSetChanged();  
  70.             }  
  71.         });  
  72.   
  73.         lv.setAdapter(mJson);// 绑定适配器  
  74.   
  75.     }  
  76.   
  77.     /** 数据源JSONArray */  
  78.     private void getJSONArray(JSONArray jArray) {  
  79.         try {  
  80.             for (int i = 1; i <= 5; i++) {  
  81.                 JSONObject jsonObject = new JSONObject();  
  82.                 jsonObject.put("title""姓名" + num++);  
  83.                 jsonObject.put("time""9月29日");  
  84.                 jsonObject.put("info""我通过了你的好友验证请求,现在我们可以开始对话啦");  
  85.                 jsonObject.put("img", R.drawable.special_spring_head2);  
  86.                 jArray.put(jsonObject);  
  87.                 if (num == count) {  
  88.                     lv.removeFooterView(view_page_footer);  
  89.                     Toast.makeText(this"没有更多数据了...", Toast.LENGTH_LONG)  
  90.                             .show();  
  91.                 }  
  92.             }  
  93.         } catch (Exception e) {  
  94.             // TODO: handle exception  
  95.         }  
  96.     }  
  97.       
  98. }  

其中,所添加的底部视图,只有一个供点击追加的按钮:
[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="wrap_content"  
  5.     android:orientation="vertical"   
  6.     android:padding="5dp">  
  7.   
  8.     <TextView  
  9.         android:id="@+id/text_page"  
  10.         android:layout_width="fill_parent"  
  11.         android:layout_height="wrap_content"  
  12.         android:text="下一页"   
  13.         android:gravity="center"/>  
  14.   
  15. </LinearLayout>  

效果图



点击“下一页”,会在ListView后追加数据。


追加完成后,清除底部视图。



版权声明:本文为博主原创文章,未经博主允许不得转载。

 

 

地址:http://download.csdn.net/category

0 0