1. 程式人生 > >【Android】ListView內資料的動態追加

【Android】ListView內資料的動態追加

設計思路

把置入介面卡的list追加資料記錄,再使用介面卡的notifyDataSetChanged()重新整理。

方法案例

  1. package com.app.test01;  
  2. import java.util.ArrayList;  
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5. import org.json.JSONArray;  
  6. import org.json.JSONException;  
  7. import org.json.JSONObject;  
  8. import android.R.integer;  
  9. import
     android.app.Activity;  
  10. import android.os.Bundle;  
  11. import android.view.ContextMenu;  
  12. import android.view.LayoutInflater;  
  13. import android.view.MenuItem;  
  14. import android.view.View;  
  15. import android.view.ContextMenu.ContextMenuInfo;  
  16. import android.widget.AbsListView;  
  17. import android.widget.AbsListView.OnScrollListener;  
  18. import android.widget.AdapterView;  
  19. import android.widget.AdapterView.AdapterContextMenuInfo;  
  20. import android.widget.BaseAdapter;  
  21. import android.widget.ListView;  
  22. import android.widget.TextView;  
  23. import android.widget.Toast;  
  24. import com.app.adapter.MyWeixinJSON;  
  25. import com.app.adapter.MyWeixinList;  
  26. /** 
  27.  * 點選  追加資料的ListView 
  28.  * @author 402-9 
  29.  * 
  30.  */
  31. publicclass ListViewPage extends Activity {  
  32.     private ListView lv;  
  33.     private BaseAdapter mJson;  
  34.     private JSONArray mData = new JSONArray();// JSON資料來源
  35.     private View view_page_footer;// 底部檢視
  36.     privateint num = 1;// 載入資料計數
  37.     privateint count = 50;// 總資料
  38. //  private boolean flag;
  39.     @Override
  40.     protectedvoid onCreate(Bundle savedInstanceState) {  
  41.         // TODO Auto-generated method stub
  42.         super.onCreate(savedInstanceState);  
  43.         setContentView(R.layout.weixin);  
  44.         lv = (ListView) findViewById(R.id.lv);  
  45.         getJSONArray(mData);  
  46.         mJson = new MyWeixinJSON(mData, this);  
  47.         view_page_footer = LayoutInflater.from(this).inflate(  
  48.                 R.layout.view_page_footer, null);  
  49.         lv.addFooterView(view_page_footer);// 新增底部檢視
  50.         TextView text_page = (TextView) view_page_footer.findViewById(R.id.text_page);  
  51.         text_page.setOnClickListener(new View.OnClickListener() {  
  52.             // 點選按鈕 追加資料 並通知介面卡
  53.             @Override
  54.             publicvoid onClick(View v) {  
  55.                 // TODO Auto-generated method stub
  56.                 TextView tv = (TextView) v;  
  57.                 tv.setText("正在載入中...");  
  58.                 getJSONArray(mData);  
  59.                 tv.setText("下一頁");  
  60.                 mJson.notifyDataSetChanged();  
  61.             }  
  62.         });  
  63.         lv.setAdapter(mJson);// 繫結介面卡
  64.     }  
  65.     /** 資料來源JSONArray */
  66.     privatevoid getJSONArray(JSONArray jArray) {  
  67.         try {  
  68.             for (int i = 1; i <= 5; i++) {  
  69.                 JSONObject jsonObject = new JSONObject();  
  70.                 jsonObject.put("title""姓名" + num++);  
  71.                 jsonObject.put("time""9月29日");  
  72.                 jsonObject.put("info""我通過了你的好友驗證請求,現在我們可以開始對話啦");  
  73.                 jsonObject.put("img", R.drawable.special_spring_head2);  
  74.                 jArray.put(jsonObject);  
  75.                 if (num == count) {  
  76.                     lv.removeFooterView(view_page_footer);  
  77.                     Toast.makeText(this"沒有更多資料了...", Toast.LENGTH_LONG)  
  78.                             .show();  
  79.                 }  
  80.             }  
  81.         } catch (Exception e) {  
  82.             // TODO: handle exception
  83.         }  
  84.     }  
  85. }  

其中,所新增的底部檢視,只有一個供點選追加的按鈕:
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns: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.     <TextView
  8.         android:id="@+id/text_page"
  9. 相關推薦

    AndroidListView資料動態追加

    設計思路 把置入介面卡的list追加資料記錄,再使用介面卡的notifyDataSetChanged()重新整理。 方法案例 package com.app.test01;   import java.util.ArrayList;   import java.util.HashMap;  

    AndroidListView控制元件的使用

    ListView控制元件 ListView控制元件以列表的形式展現具體資料內容 資料過多時會出現滾動條 根據資料長度自適應螢幕顯示 ListView列表由多個Item組成,每個Item的佈局相同,用單獨一個XML定義 activity_main.xml(互動介面)

    Android專案中資料夾和檔案的作用

    Table of Contents 資料夾的作用  檔案的作用    資料夾的作用  No. 資料夾 描述 1 src 存放

    AndroidListView、RecyclerView、ScrollView裡巢狀ListView 相對優雅的解決方案:NestFullListView

    一 背景概述: ScrollView裡巢狀ListView,一直是Android開發者(反正至少是我們組)最討厭的設計之一,完美打破ListView(RecyclerView)的複用機制,成功的將Native頁面變成一個又臭又長的H5網頁效果,但由於這種設計需

    AndroidListView的基礎學習

    class MyAdapter extends BaseAdapter { @Override //有多少資料數目就返回多少數目,如果返回1就只顯示一條數目的view

    AndroidListView開發中Adapter使用Activity中的方法

    最近在做一個專案,本來只做一塊,後來需求有所變化,變成不確定欄數了,有時一塊,有時兩塊,或者更多,我就想引入ExpandableListView(以下簡稱listview),引入這個控制元件對我也是個

    AndroidListView與Button的共存問題解決

    這兩天在搗鼓ListView widget,為了在ListView中加入Button這類的有 “點選” 事件的widget,請教了不少高手,感謝LandMark對我的認真講解,下面把解決過程描述一下。 ListView 和 其它能觸發點選事件的widget無法一起正常工作的

    AndroidrecyclerView無資料,只顯示一條資料

    RecyclerView相比ListView,優化了許多,但是有許多要注意的地方。1.首先可能出現的情況是,recyclerView無資料展示。可能由如下原因導致:①getItemCount()方法要返回arrayList的長度,不能返回0.②要對recyclerView設定

    Android利用 ACRA 實現在規定時間崩潰次數超過規定值就自動清理 APP 資料

    其實 ACRA 是一個崩潰處理的類庫,其功能就是收集App崩潰堆疊資訊,生成報告併發送到指定端,當然它也可以自己定製對應的操作,所以是個處理崩潰很不錯的庫。 ACRA Application Crash Reports for Android 其實在規定時間內崩潰次數超

    Android刪除已知路徑的檔案或資料

    轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80153517 【功能】 delete(String delFile):刪除檔案或資料夾 deleteSingleFile(String fil

    Android複製assets裡的單檔案到指定資料

    轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80069811 本方法使用前提是已擁有許可權,未對許可權不足情況進行處理,如有需要可自行新增。 關於讀寫許可權的總結請參考:https://blog.csdn.n

    Android動態連結庫so的載入原理

    前言 最近開發的元件時常出現了執行時載入so庫失敗問題,每天都會有java.lang.UnsatisfiedLinkError的錯誤爆出來,而且線上總是偶然復現,很疑惑。所以本文將從AOSP原始碼簡單跟蹤Android中的動態連結庫so的載入原理,試圖找出一絲線索。 載入入口

    Android一、Progress進度條實現的三種方式:主執行緒實現,Service載入,動態建立

    前言 更新版本,上傳資料到服務端,都是需要進度顯示的,Android進度顯示兩種方式 ProgressDialog 和 ProgressBar 新版本中ProgressDialog不被推薦使用,所以專案採用ProgressBar 分為三種實現方式: 1、MainAct

    轉載R語言資料處理——資料合併與追加

    資料結構的塑造是資料視覺化前重要的一環,雖說本公眾號重心在於資料視覺化,可是涉及到一些至關重要的資料整合技巧,還是有必要跟大家分享一下的。 在視覺化前的資料處理技巧中,匯入匯出、長寬轉換已經跟大家詳細的介紹過了。 今天跟**家分享資料集的合併與追加,並且這裡根據所依賴函式的處理效率,給

    mpvue實現echarts圖表動態載入資料

    功能描述 使用mpvue框架開發微信小程式。目的效果為小程式中顯示一個折線圖,當點選切換按鈕時,切換圖表。 實現步驟 1.查詢mpvue官方文件關於echarts的實現方式------靜態載入圖表,只加載一次 2.實現動態載入圖表(能夠根據需求多次繪製圖表) 思

    Android RecyclerView、ListView實現單選列表的優雅之路.

    一 概述: 這篇文章需求來源還是比較簡單的,但做的優雅仍有值得挖掘的地方。 需求來源:一個類似餓了麼這種電商優惠券的選擇介面: 其實就是 一個普通的列表,實現了單選功能, 效果如圖: (不要怪圖渣了,我擼了四五遍,公司錄出來的GIF就這麼渣

    android關於FragmentManager動態管理Fragment時Fragment生命週期的探究

    Fragment是Android中的重要元件,在Android 3.0的時候新增進來。 關於Fragment的生命週期,我相信瞭解過的開發人員都應該把以下方法脫口而出:onAttach, onCreate, onCreateView, onViewCreated, on

    Android簡單實現使用WebView元件實現在App開啟web

    關於WebView元件 如何實現在App內嵌web 在新建的android專案裡,如果要實現內嵌Web,一定要在AndroidManifest.xml設定訪問網路許可權: <uses-permission android:name="andr

    AndroidAndroid Camera實時資料採集及通過MediaCodec硬編碼編碼資料的流程

    // video device. private Camera camera; private MediaCodec vencoder; private MediaCodecInfo vmci; private MediaCodec.BufferInfo vebi; private byte[] vbuff

    Android關於不刪除當前介面資料重新整理列表問題

    前言:        App中有一模組為應用中心,改版之後低仿了ZFB中應用管理的模式,但是就按照我們之前的開發方式,首頁重新整理時會將資料清空一下然後重新賦值給list填充到介面上,甲方領導看了之後感覺體驗不是很好,因為IOS端是不清空資料重新整理的,所以要求Android