展会信息港展会大全

Android+Listview+分页+动态加载网络数据
来源:互联网   发布日期:2015-11-27 13:37:50   浏览:3271次  

导读:最近搞Android动态加载网络数据总结点心得:list_item.xml代码如下:<?xml version="1.0" encoding="utf-8"?><Line...

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

list_item.xml代码如下:

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal">

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

<TextView

android:id="@+id/Gds_Name"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="20px"

/>

<TextView

android:id="@+id/Gds_Code"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

</LinearLayout>

</LinearLayout>

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal">

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

<TextView

android:id="@+id/Gds_Name"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="20px"

/>

<TextView

android:id="@+id/Gds_Code"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

</LinearLayout>

</LinearLayout>

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

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

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<Button

android:id="@+id/loadMoreButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="查看更多..." />

</LinearLayout>

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

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<Button

android:id="@+id/loadMoreButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="查看更多..." />

</LinearLayout>

商品类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;

}

}

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. */

@Override

public 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() {

@Override

public void onClick(View v) {

loadMoreButton.setText("正在加载中..."); // 设置按钮文字

handler.postDelayed(new Runnable() {

@Override

public void run() {

loadMoreData();

adapter.notifyDataSetChanged();

Toast.makeText(AndroidQueryActivity.this, "数据加载完!", Toast.LENGTH_LONG).show();

loadMoreButton.setText("查看更多..."); // 恢复按钮文字

}

}, 2000);

}

});

Search_Btn.setOnClickListener(new View.OnClickListener() {

@Override

public 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);

}

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

int itemsLastIndex = adapter.getCount() - 1; // 数据集最后一项的索引

int lastIndex = itemsLastIndex + 1;

if (scrollState == OnScrollListener.SCROLL_STATE_IDLE

&& visibleLastIndex == lastIndex) {

// 如果是自动加载,可以在这里放置异步加载数据的代码

}

}

@Override

public 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包装成Adapter

List<Goods> GoodsArry = new ArrayList<Goods>();

for (int i = 0; i<jsonArray.length(); i++) {

Goods items = new Goods();

items.setGds_Name(jsonArray.optJSONObject(i).getString(

"GdsName"));

items.setGds_Code(jsonArray.optJSONObject(i).getString(

"GdsCode"));

GoodsArry.add(items);

}

adapter = new PaginationAdapter(GoodsArry);

} catch (Exception e) {

//DialogUtil.showDialog(this, e.getMessage(), false);

e.printStackTrace();

}

}

/**

* 加载更多数据

*/

private void loadMoreData() {

int count = adapter.getCount();

try {

String Parame = SearcText.getText().toString();

String pageSize = String.valueOf(count / 10 + 1);

String ReturnStr = WebServiceUtil.getCityListByProvince(Parame,

pageSize);

JSONArray jsonArray;

// DialogUtil.showDialog(this, ReturnStr, false);

if (ReturnStr.contentEquals("anyType{}")) {

jsonArray = new JSONArray();

} else {

jsonArray = new JSONArray(ReturnStr);

}

// 向指定URL发送请求,并把服务器响应转换成JSONArray对象

// 将JSONArray包装成Adapter

for (int i = 1; jsonArray.length() <= 10; i++) {

Goods items = new Goods();

items.setGds_Name(jsonArray.optJSONObject(i).getString(

"GdsName"));

items.setGds_Code(jsonArray.optJSONObject(i).getString(

"GdsCode"));

adapter.addNewsItem(items);

}

} catch (Exception e) {

//DialogUtil.showDialog(this, e.getMessage(), false);

e.printStackTrace();

}

}

class PaginationAdapter extends BaseAdapter {

List<Goods> newsItems;

public PaginationAdapter(List<Goods> newsitems) {

this.newsItems = newsitems;

}

@Override

public int getCount() {

return newsItems.size();

}

@Override

public Object getItem(int position) {

return newsItems.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public 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;

}

/**

* 添加数据列表项 www.2cto.com

*

* @param newsitem

*/

public void addNewsItem(Goods newsitem) {

newsItems.add(newsitem);

}

}

}

摘自 zz_mm的专栏

赞助本站

人工智能实验室

相关热词: android开发 教程

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港