安卓分页显示数据(上一页和下一页)
来源:互联网 发布:网络作家富豪榜2016年 编辑:程序博客网 时间:2024/05/02 00:23
先说一下分页,大部分都是滚动加载,而有上一页下一页效果的,网上很多都是同一个例子,就是data是一个String型的数组,在其最重要的getView()方法中,写得很让人看不懂,自己又参考了其它的例子,终于明白了,于是就有了以下的代码:
DsznzActivity代码:
public class DsznzActivity extends Activity {private ArrayList<HashMap<String, String>> listItem;private ListView list_ylfn; Button btnPre, btnNext;View.OnClickListener clickListener;// 用于显示每列5个Item项。 int VIEW_COUNT = 10;// 用于显示页号的索引int index = 0; protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.list_ylfn);list_ylfn = (ListView) findViewById(R.id.listYlfn);btnPre = (Button) findViewById(R.id.btnPre);btnNext = (Button) findViewById(R.id.btnNext);listItem = new ArrayList<HashMap<String, String>>();HttpClient client = new DefaultHttpClient();HttpEntity entity = null;try {String uri = GetConnParams.getConnUri()+ "/phone_listYlfn?zgy.zgynum=" + zgynumLoged; //此处是从服务端获取数据,有些代码就省略了HttpPost request = new HttpPost(uri);HttpResponse response;response = client.execute(request);if (response.getStatusLine().getStatusCode() == 200) {entity = response.getEntity();}String json = EntityUtils.toString(entity, "UTF-8").trim();JSONArray array = new JSONArray(URLDecoder.decode(json, "utf-8"));for (int i = 0; i < array.length(); i++) {HashMap<String, String> map = new HashMap<String, String>();map.put("ylfn_did", array.getJSONObject(i).getString("did"));map.put("ylfn_name", array.getJSONObject(i).getString("name"));map.put("gmsfz", array.getJSONObject(i).getString("gmsfz"));listItem.add(map);tmpListItem.add(map);}//// 生成适配器的Item和动态数组对应的元素//SimpleAdapter listItemAdapter = new SimpleAdapter(this, listItem,// 数据源//R.layout.ylfn,// ListItem的XML实现//// 动态数组与ImageItem对应的子项//new String[] { "ylfn_did", "ylfn_name", "gmsfz" },//// ImageItem的XML文件里面的一个ImageView,两个TextView ID//new int[] { R.id.ylfn_did, R.id.ylfn_name, R.id.gmsfz });//myAdapter=new MyAdapter(this);list_ylfn.setAdapter(myAdapter);clickListener = new Button.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.btnPre:preView();break;case R.id.btnNext:nextView();break;}}};// 添加2个Button的监听事件。btnPre.setOnClickListener(clickListener);btnNext.setOnClickListener(clickListener);// 检查2个Button是否是可用的checkButton();} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{ try { if(entity!=null) entity.consumeContent(); client.getConnectionManager().shutdown(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}// 点击左边的Button,表示向前翻页,索引值要减1.public void preView() {index--;// 刷新ListView里面的数值。myAdapter.notifyDataSetChanged();// 检查Button是否可用。checkButton();}// 点击右边的Button,表示向后翻页,索引值要加1.public void nextView() {index++;// 刷新ListView里面的数值。myAdapter.notifyDataSetChanged();// 检查Button是否可用。checkButton();}public void checkButton() {// 索引值小于等于0,表示不能向前翻页了,以经到了第一页了。// 将向前翻页的按钮设为不可用。if (index <= 0) {btnPre.setEnabled(false);}else{btnPre.setEnabled(true);}// 值的长度减去前几页的长度,剩下的就是这一页的长度,如果这一页的长度比View_Count小,表示这是最后的一页了,后面在没有了。// 将向后翻页的按钮设为不可用。if (listItem.size() - index * VIEW_COUNT <= VIEW_COUNT) {btnNext.setEnabled(false);}// 否则将2个按钮都设为可用的。else {btnNext.setEnabled(true);}}// ListView的Adapter,这个是关键的导致可以分页的根本原因。public class MyAdapter extends BaseAdapter {Activity activity;public MyAdapter(Activity a) {activity = a;}// 设置每一页的长度,默认的是View_Count的值。@Overridepublic int getCount() {// TODO Auto-generated method stub// return data.length;// ori表示到目前为止的前几页的总共的个数。int ori = VIEW_COUNT * index;// 值的总个数-前几页的个数就是这一页要显示的个数,如果比默认的值小,说明这是最后一页,只需显示这么多就可以了if (listItem.size() - ori < VIEW_COUNT) {return listItem.size() - ori;}// 如果比默认的值还要大,说明一页显示不完,还要用换一页显示,这一页用默认的值显示满就可以了。else {return VIEW_COUNT;}}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;} //重点是getView方法@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stub// return addTestView(position);convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.ylfn,null);TextView ylfn_did_view = (TextView)convertView.findViewById(R.id.ylfn_did);TextView ylfn_name_view = (TextView)convertView.findViewById(R.id.ylfn_name);TextView ylfn_gmsfz_view = (TextView)convertView.findViewById(R.id.gmsfz);ylfn_did_view.setText(listItem.get(position + index * VIEW_COUNT).get("ylfn_did"));ylfn_name_view.setText(listItem.get(position + index * VIEW_COUNT).get("ylfn_name"));ylfn_gmsfz_view.setText(listItem.get(position + index * VIEW_COUNT).get("gmsfz"));return convertView;}}}
list_ylfn.xml代码:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/beijing"> <LinearLayout android:layout_width="fill_parent" android:layout_height="36dp" android:gravity="center" android:orientation="horizontal" android:layout_marginTop="44dip"> <TextView android:layout_width="40dp" android:layout_height="36dp" android:gravity="center" android:text="编号" android:textSize="12sp" /> <TextView android:layout_width="160dp" android:layout_height="36dp" android:gravity="center" android:text="姓名" android:textSize="12sp" /> <TextView android:layout_width="wrap_content" android:layout_height="36dp" android:gravity="center" android:text="身份证号" android:textSize="12sp" /> </LinearLayout> <ListView android:id="@+id/listYlfn" android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="88dp" android:layout_marginBottom="32dip"android:textFilterEnabled="true"> </ListView> <LinearLayout android:layout_width="fill_parent" android:layout_height="32dip" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:gravity="center" android:orientation="horizontal" > <Button android:id="@+id/btnPre" android:layout_width="80dip" android:layout_height="32dip" android:text="上一页" android:textSize="12sp" /> <Button android:id="@+id/btnNext" android:layout_width="80dip" android:layout_height="32dip" android:layout_marginLeft="20dip" android:text="下一页" android:textSize="12sp" /> </LinearLayout></RelativeLayout>
ylfn.xml代码:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <TextView android:text="编号" android:layout_width="40dp" android:layout_height="36dp" android:id="@+id/ylfn_did" android:gravity="center" android:textSize="12sp" android:textColor="#000000"/> <TextView android:text="姓名" android:layout_width="80dp" android:layout_height="36dp" android:id="@+id/ylfn_name" android:gravity="center" android:textSize="12sp" android:textColor="#000000"/> <TextView android:text="身份证号" android:layout_width="wrap_content" android:layout_height="36dp" android:id="@+id/gmsfz" android:gravity="center" android:textSize="12sp" android:textColor="#000000"/></LinearLayout>
0 0
- 安卓分页显示数据(上一页和下一页)
- asp.net显示第一页、上一页、下一页和最后一页的分页显示数据表的数据
- 万能分页显示上一页下一页
- 分页(上一页,下一页)
- 简单分页(只有第一页、上一页、下一页、末一页)
- 关于分页标签,上一页和下一页不可点击。
- java实现的分页方法(上一页下一页)
- dede 分页 上一页 下一页
- servlet+mysql分页(上一页,下一页)
- 使用分页模板完成,显示上一页,下一页,第一页,最后一页,和当前第x页,共y页 。
- dwz配合分页插件的带有条件上一页下一页(保证数据体系不变)
- 将模版列功能改造成博客内容列表, 并使完成分页 (使用分页模板完成,显示上一页,下一页,第一页,最后一页,和当前第x页,共y页 。)
- 将模版列功能改造成博客内容列表, 并使完成分页 (使用分页模板完成,显示上一页,下一页,第一页,最后一页,和当前第x页,共y页 。)
- 分页实现-----首页、上一页、下一页、最后一页
- GridView分页(第一页、上一页、下一页、最后页、当前页数/总页数)
- GridView分页(第一页、上一页、下一页、最后页、当前页数/总页数)
- Viewpager显示上一页的一部分和下一页的一部分(循环滑动)
- 关于MVC中使用JqGrid插件分页时无法显示分页按钮(首页、上一页、下一页、最后一页)的原因
- 2014-1-27codeview
- Android Studio踩坑记
- 2014-1-28mixview
- 操作系统的启动详解
- 最坏为线性时间的查找第i小元素
- 安卓分页显示数据(上一页和下一页)
- 做好代码复用不简单
- Jbpm4.4集成SSH
- Java concurrent Framework并发容器之CopyOnWriteArrayList(1.6)源码分析
- 2014-1-29customView
- cvCanny用法(opencv参考手册)
- 【备战蓝桥杯】USACO--> milk
- HDU 1158 Employment Planning
- XML的特殊字符