android的ListView如何追加数据?

刚开始绑定10条,后面点击更多应该把新的10条追加进去,而不是重新绑定20条。... 刚开始绑定10条,后面点击更多应该把新的10条追加进去,而不是重新绑定20条。 展开
 我来答
趣事情
推荐于2016-08-09 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部

实现代码如下:  

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>

其中,所添加的底部视图,只有一个供点击追加的按钮:
<?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后追加数据。

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

远航o0
2012-07-13 · TA获得超过323个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:131万
展开全部
listview的适配器adapter里面调用additem(List)这样的方法,如果没有,就自己 写一个,就是给adapter中的list追加数据而已,然后调用adapter的刷新就好了,esay
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
h1040106051
2012-07-13 · TA获得超过496个赞
知道小有建树答主
回答量:292
采纳率:100%
帮助的人:88.8万
展开全部
把你置入适配器的list追加10条,再使用适配器的notifyDataSetChanged()刷新
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaoai83440778
2012-07-13 · TA获得超过251个赞
知道答主
回答量:121
采纳率:0%
帮助的人:29.3万
展开全部
三十岁
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式