设计思路
把置入适配器的list追加数据记录,再使用适配器的notifyDataSetChanged()刷新。
方法案例
以http://blog.csdn.net/jueblog/article/details/12114513的ListView为例,对Activity作如下改进。
package com.app.test01; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.R.integer; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.app.adapter.MyWeixinJSON; import com.app.adapter.MyWeixinList; /** * 点击 追加数据的ListView * @author 402-9 * */ public class ListViewPage extends Activity { private ListView lv; private BaseAdapter mJson; private JSONArray mData = new JSONArray();// JSON数据源 private View view_page_footer;// 底部视图 private int num = 1;// 加载数据计数 private int count = 50;// 总数据 // private boolean flag; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.weixin); lv = (ListView) findViewById(R.id.lv); getJSONArray(mData); mJson = new MyWeixinJSON(mData, this); view_page_footer = LayoutInflater.from(this).inflate( R.layout.view_page_footer, null); lv.addFooterView(view_page_footer);// 添加底部视图 TextView text_page = (TextView) view_page_footer.findViewById(R.id.text_page); text_page.setOnClickListener(new View.OnClickListener() { // 点击按钮 追加数据 并通知适配器 @Override public void onClick(View v) { // TODO Auto-generated method stub TextView tv = (TextView) v; tv.setText("正在加载中..."); getJSONArray(mData); tv.setText("下一页"); mJson.notifyDataSetChanged(); } }); lv.setAdapter(mJson);// 绑定适配器 } /** 数据源JSONArray */ private void getJSONArray(JSONArray jArray) { try { for (int i = 1; i <= 5; i++) { JSONObject jsonObject = new JSONObject(); jsonObject.put("title", "姓名" + num++); jsonObject.put("time", "9月29日"); jsonObject.put("info", "我通过了你的好友验证请求,现在我们可以开始对话啦"); jsonObject.put("img", R.drawable.special_spring_head2); jArray.put(jsonObject); if (num == count) { lv.removeFooterView(view_page_footer); Toast.makeText(this, "没有更多数据了...", Toast.LENGTH_LONG) .show(); } } } catch (Exception e) { // TODO: handle exception } } }
其中,所添加的底部视图,只有一个供点击追加的按钮:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="5dp"> <TextView android:id="@+id/text_page" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="下一页" android:gravity="center"/> </LinearLayout>
效果图
点击“下一页”,会在ListView后追加数据。
追加完成后,清除底部视图。