cwac-endless adapter 使用攻略 EndlessAdapter 怎么使用

来源:互联网 发布:影视后期制作软件下载 编辑:程序博客网 时间:2024/04/28 06:16

最近做一个项目需要用到ListView加载上千条数据,当然结果是很卡! 怎么解决呢?google一下?

找到了一个开源项目http://commonsware.com/cwac

但是怎么使用呢?网上找了一堆demo没说清楚!经过本人反复实验 终于弄懂了!如果有不合理或者更好的建议请写下来大家一起共同解决!

好了废话不多说 开始!


demo和jar地址http://download.csdn.net/detail/zabio/6979685


1.准备好项目所需要的jar包 CWAC-AdapterWrapper.jar 和CWAC-EndlessAdapter.jar

2.导入项目这个步骤就不再说了

3.看代码 简单粗糙的写了下


package com.hy.lazylistview;

import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.os.SystemClock;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.animation.Animation;import android.view.animation.RotateAnimation;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import com.commonsware.cwac.endless.EndlessAdapter;public class MainActivity extends Activity {private ListView lv;private List list = new ArrayList();@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lv = (ListView) findViewById(R.id.lv);//初始化第一次显示的数据for (int j = 0; j < 100; j++) {list.add(j + "startData");}lv.setAdapter(new MyAdapter());}//这个是我们需要的可以无限往下滑进行列表数据加载的控件class MyAdapter extends EndlessAdapter {//加载时的动画private RotateAnimation rotate = null;private View pendingView = null;//构造的时候 要super一下MyAdapter() {//里面这个很熟悉 常用的baseAdaptersuper(new MyBaseAdapter());rotate = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF, 0.5f);rotate.setDuration(600);rotate.setRepeatMode(Animation.RESTART);rotate.setRepeatCount(Animation.INFINITE);}//显示加载时的view@Overrideprotected View getPendingView(ViewGroup parent) {View row = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, null);pendingView = row.findViewById(android.R.id.text1);pendingView.setVisibility(View.GONE);pendingView = row.findViewById(R.id.throbber);pendingView.setVisibility(View.VISIBLE);startProgressAnimation();return (row);}//设置加载的时间@Overrideprotected boolean cacheInBackground() {SystemClock.sleep(10000); //设置限制总数据大小  return (getWrappedAdapter().getCount() < 1000);}//往list里面添加数据@Overrideprotected void appendCachedData() {if (getWrappedAdapter().getCount() < 1000) {for (int i = 0; i <100; i++) {list.add(i+"addData");}}}void startProgressAnimation() {if (pendingView != null) {pendingView.startAnimation(rotate);}}}//这是常见的控件不解释了class MyBaseAdapter extends BaseAdapter {@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn list.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}class Holder {TextView t, t2;}@Overridepublic View getView(int position, View view, ViewGroup parent) {Holder h;if (view == null) {h=new Holder();view = View.inflate(MainActivity.this, R.layout.item, null);h.t = (TextView) view.findViewById(R.id.tv);h.t2 = (TextView) view.findViewById(R.id.tv2);view.setTag(h);} else {h = (Holder) view.getTag();}h.t.setText("position" + position);h.t2.setText(list.get(position).toString());return view ;}}}


--------------------资源文件--------------------

activity_main<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <ListView        android:id="@+id/lv"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_alignParentLeft="true"        android:cacheColorHint="#00000000"        android:fastScrollEnabled="true" /></RelativeLayout>item------------------------------<?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="match_parent"    android:orientation="vertical" >    <TextView         android:id="@+id/tv"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textColor="#0f0"/>    <TextView         android:id="@+id/tv2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textColor="#00f"/></LinearLayout>row-----------------------------<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="wrap_content" >    <TextView        android:id="@android:id/text1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:gravity="center_vertical"        android:minHeight="?android:attr/listPreferredItemHeight"        android:paddingLeft="6dip"        android:textAppearance="?android:attr/textAppearanceLarge" />    <ImageView        android:id="@+id/throbber"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/ic_popup_sync_1"        android:visibility="gone" />        <TextView        android:id="@+id/tv"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:gravity="center_vertical"        android:minHeight="?android:attr/listPreferredItemHeight"        android:paddingLeft="6dip"         />    </FrameLayout>







0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 20了丁丁还很小怎么办 5角硬币吞进肚子怎么办 孩子吞了5角硬币怎么办 左腿比右腿微粗怎么办 一个腿长一个腿短怎么办 刚买的毛笔很硬怎么办 我哥哥太爱我了怎么办 如果婚姻无法维持该怎么办 捡了一只流浪狗怎么办 微博加载不出来怎么办 我的脾气很暴躁怎么办 歌单恢复已删除怎么办 家里破产了我该怎么办 对付有心计的人怎么办 上嘴唇无故肿了怎么办 下嘴唇肿了一半怎么办 狗狗早上叫不停怎么办 狗在家乱咬东西怎么办 狗狗晚上一直叫怎么办 金毛幼犬晚上叫怎么办 金毛晚上老是叫怎么办 5岁宝宝总尿裤子怎么办 2岁宝宝尿裤子怎么办 2周岁宝宝尿裤子怎么办 5岁宝宝尿裤子怎么办 模拟人生4不怀孕怎么办 狗狗的毛打结怎么办 狗狗生病了不吃东西怎么办 给领导送礼不收怎么办 国外弃货,货代怎么办 不小心拜了阴庙怎么办 要考试了不想考怎么办? 刚怀孕喝了红酒怎么办 不知道该怎么办的成语 墙纸3年了有味道怎么办 本命佛不要了怎么办 本命佛不想戴了怎么办 刚养的猫怕人怎么办 吃了马蜂蛹过敏怎么办 三星s5边框掉漆怎么办 一楼厕所反味怎么办