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
- cwac-endless adapter 使用攻略 EndlessAdapter 怎么使用
- Endless
- Endless
- 如何使用Array Adapter
- Adapter的使用
- ListView使用自定义Adapter
- Android Adapter使用总结
- adapter的使用1
- adapter的使用2
- Adapter的使用
- android中的Adapter使用
- AdapterView<Adapter>使用示例
- ListView----Adapter的使用
- 重写adapter 使用listview
- Android adapter的使用
- ListView,adapter使用总结
- 使用ButterKnife完成Adapter
- android- adapter 的使用
- 百度360发布搜索“全额赔付”计划
- 我最近练习的 mysql 语句
- hdu1800 排序二分法nlogn
- 再理解Protected Mode
- 圣经故事第三集
- cwac-endless adapter 使用攻略 EndlessAdapter 怎么使用
- C#中使用命名管道进行进程通信的实例
- Android自带的toolbox分析及扩展
- 可能大家跟文冰一样
- cocos2d-x学习视频资源
- 【matlab编程】Matlab版扫雷
- 数据集DataSet某行某列数据为空,如何判断为空?
- java基础学习记录之for嵌套学习与练习一
- Isolation level