最近搞Android动态加载网络数据总结点心得:

list_item.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>                  

显示加载更多的布局代码loadmore.xml如下:

<?xml version="1.0" encoding="utf-8"?>  


商品类Goods.java的代码如下:

package com.jemsn.util;public class Goods {private String Goods_ID;private String Gds_Code;private String Gds_Name;private String Gds_BarCode;private String Gds_Unit;private Double Gds_Ref;private String Gds_Price;private String Gds_PUnit;private String Gds_ClassID;private String Gds_GdsPY;public String getGoods_ID() {return Goods_ID;}public void setGoods_ID(String goods_ID) {Goods_ID = goods_ID;}public String getGds_Code() {return Gds_Code;}public void setGds_Code(String gds_Code) {Gds_Code = gds_Code;}public String getGds_Name() {return Gds_Name;}public void setGds_Name(String gds_Name) {Gds_Name = gds_Name;}public String getGds_BarCode() {return Gds_BarCode;}public void setGds_BarCode(String gds_BarCode) {Gds_BarCode = gds_BarCode;}public String getGds_Unit() {return Gds_Unit;}public void setGds_Unit(String gds_Unit) {Gds_Unit = gds_Unit;}public Double getGds_Ref() {return Gds_Ref;}public void setGds_Ref(Double gds_Ref) {Gds_Ref = gds_Ref;}public String getGds_Price() {return Gds_Price;}public void setGds_Price(String gds_Price) {Gds_Price = gds_Price;}public String getGds_PUnit() {return Gds_PUnit;}public void setGds_PUnit(String gds_PUnit) {Gds_PUnit = gds_PUnit;}public String getGds_ClassID() {return Gds_ClassID;}public void setGds_ClassID(String gds_ClassID) {Gds_ClassID = gds_ClassID;}public String getGds_GdsPY() {return Gds_GdsPY;}public void setGds_GdsPY(String gds_GdsPY) {Gds_GdsPY = gds_GdsPY;}}


程序的主界面AndroidQueryActivity代码如下:

package com.jemsn.android;import java.util.ArrayList;import java.util.List;import org.json.JSONArray;import com.jemsn.util.DialogUtil;import com.jemsn.util.Goods;import com.jemsn.util.WebServiceUtil;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class AndroidQueryActivity extends Activity implements OnScrollListener {private ListView list_View;private int visibleLastIndex = 0; // 最后的可视项索引private int visibleItemCount; // 当前窗口可见项总数private int datasize = 100; // 模拟数据集的条数private PaginationAdapter adapter;private View loadMoreView;private Button loadMoreButton,Search_Btn;private Handler handler = new Handler();private EditText SearcText;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.view_item);SearcText = (EditText) findViewById(R.id.text_SeGds);Search_Btn=(Button)findViewById(R.id.BtnGoods_Search);loadMoreView = getLayoutInflater().inflate(R.layout.loadmore, null);loadMoreButton = (Button) loadMoreView.findViewById(R.id.loadMoreButton);loadMoreButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {loadMoreButton.setText("正在加载中..."); // 设置按钮文字handler.postDelayed(new Runnable() {@Overridepublic void run() {loadMoreData();adapter.notifyDataSetChanged();Toast.makeText(AndroidQueryActivity.this, "数据加载完!", Toast.LENGTH_LONG).show();loadMoreButton.setText("查看更多..."); // 恢复按钮文字}}, 2000);}});Search_Btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {initializeAdapter();list_View.setAdapter(adapter);}});list_View = (ListView)findViewById(R.id.GoodsList);list_View.addFooterView(loadMoreView); // 设置列表底部视图Log.e("WangYOUHellow","Goods");initializeAdapter();list_View.setAdapter(adapter);Log.e("WangYOUHellow","Hellow");list_View.setOnScrollListener(this);}@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {int itemsLastIndex = adapter.getCount() - 1; // 数据集最后一项的索引int lastIndex = itemsLastIndex + 1;if (scrollState == OnScrollListener.SCROLL_STATE_IDLE&& visibleLastIndex == lastIndex) {// 如果是自动加载,可以在这里放置异步加载数据的代码}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {this.visibleItemCount = visibleItemCount;visibleLastIndex = firstVisibleItem + visibleItemCount - 1;// 如果所有的记录选项等于数据集的条数,则移除列表底部视图if (totalItemCount == datasize + 1) {//list_View.removeFooterView(loadMoreView);Toast.makeText(this, "数据全部加载完!", Toast.LENGTH_LONG).show();}}/** * 初始化ListView的适配器 */private void initializeAdapter() {Log.e("WangYOUHellow","Bad");try {String Parame = SearcText.getText().toString();String ReturnStr = WebServiceUtil.getCityListByProvince(Parame, "1");//DialogUtil.showDialog(this,ReturnStr, false);JSONArray jsonArray;// DialogUtil.showDialog(this, ReturnStr, false);if (ReturnStr.contentEquals("anyType{}")) {jsonArray = new JSONArray();} else {jsonArray = new JSONArray(ReturnStr);}// 向指定URL发送请求,并把服务器响应转换成JSONArray对象// 将JSONArray包装成AdapterList GoodsArry = new ArrayList();for (int i = 0; i newsItems;public PaginationAdapter(List newsitems) {this.newsItems = newsitems;}@Overridepublic int getCount() {return newsItems.size();}@Overridepublic Object getItem(int position) {return newsItems.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View view, ViewGroup parent) {if (view == null) {view = getLayoutInflater().inflate(R.layout.list_item, null);}// 商品名称TextView tvGdsName = (TextView) view.findViewById(R.id.Gds_Name);tvGdsName.setText(newsItems.get(position).getGds_Name());// 商品编码TextView tvGdsCode = (TextView) view.findViewById(R.id.Gds_Code);tvGdsCode.setText(newsItems.get(position).getGds_Code());return view;}/** * 添加数据列表项 *  * @param newsitem */public void addNewsItem(Goods newsitem) {newsItems.add(newsitem);}}}

程序运行效果图如下:


 


 

更多相关文章

  1. Android(安卓)当媒体变更后,通知其他应用重新扫描
  2. More than one file was found with OS independent path 'lib/a
  3. sharedPreferences的相关用法介绍
  4. 移动开发:Android(安卓)Media (Audio) Framework Analyse
  5. android HTTP 登陆链接Mysql数据库实现登陆
  6. Didn't find class "androidx.core.content.FileProvider" on pa
  7. Android(安卓)国际化语言设置,简单粗暴。
  8. 转发:bitmap 设置图片尺寸,避免 内存溢出 OutOfMemoryError的优化
  9. android注入代码之注入类方法

随机推荐

  1. Android上的MSN初见成效~~!!
  2. Android (安卓数据的五种存储方式)
  3. Android向Fragment传值
  4. Android 如何开发指纹支付
  5. Android(安卓)LayoutInflater原理分析,带
  6. Android(安卓)Day03-SQLite数据库操作及L
  7. UI更新及消息处理机制
  8. 亲测可用Android原生代码添加系统服务
  9. Ubuntu遇到Please ensure that adb is co
  10. Android手势分发和嵌套滚动机制