Android数据缓存加载,listview显示

//listview显示数据,分布加载,下拉加载,功能类似QQ空间的无刷新加载数据

public class Safewei2_activity extends Activity {
 protected int startindex=0;
protected int maxsize=20;
private BlackpeopleDao dao;
protected ListView lv;
protected Adape adapters;


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
dao=new BlackpeopleDao(this);//创建SQLhelp类的对象
setContentView(R.layout.activitysafecommand2);
 
InitUI();//加载UI
 Initdata();//加载数据

}



private void InitUI() {
lv=(ListView) findViewById(R.id.lvblack); 
lv.setOnScrollListener(new OnScrollListener() {
//给listview的滚动设置监听事件
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {//判断listview的状态
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE://滚动处于闲置状态
int lastposition=lv.getLastVisiblePosition();   //获取显示的listview的最后一条数据的位置
if(lastposition==(list.size()-1))
{
startindex+=maxsize;
if(startindex>=totalnumber)
{
Toast.makeText(Safewei2_activity.this,"没有更多数据", Toast.LENGTH_SHORT).show();
   //return;
}else
{
Initdata();
}

}

break;
}

}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// 重写的方法
}
});

}
Handler hand=new Handler(){
private Myadapter adapter;


public void handleMessage(android.os.Message msg) {
//处理数据

if(adapters==null)
{   
   adapters=new Adape(); 
     lv.setAdapter(adapters); 

}else{
adapters.notifyDataSetChanged(); //刷新界面
}

};

};
protected ArrayList<BlackpeopleInfo> list;
public ViewHolder holder;
private int totalnumber;

private void Initdata() {
totalnumber=dao.GetPage();
new Thread(){ //线程加载,防止阻塞主线程
@Override
public void run() {
if(list==null)
{
list=dao.Getpagelist2(startindex, maxsize); //加载list数据
 
}else{
list.addAll(dao.Getpagelist2(startindex, maxsize));
}

hand.sendEmptyMessage(0);
 
}
 
}.start();
}


 class Adape extends BaseAdapter{


@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}


@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}


@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return  position;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null)
{    
convertView=View.inflate(Safewei2_activity.this, R.layout.itemsafeactivity, null);
holder=new ViewHolder();
 holder.number= (TextView) convertView.findViewById(R.id.tvphone);
 holder.mode=(TextView) convertView.findViewById(R.id.tvmode);
 holder.img=(ImageView) convertView.findViewById(R.id.deles);
 convertView.setTag(holder);
        }else{
holder=(ViewHolder) convertView.getTag();
        
}
  
holder.number.setText(list.get(position).getNumber());
// mode.setText(list.get(position).getMode());
 
if(list.get(position).getMode().equals("1"))
{
holder.mode.setText("电话拦截");
}else if(list.get(position).getMode().equals("2"))
{
holder.mode.setText("短信拦截"); 
}else if(list.get(position).getMode().equals("3"))
{
holder.mode.setText("电话拦截和短信拦截");
}
final BlackpeopleInfo infos=list.get(position);
holder.img.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String number=infos.getNumber();
boolean rows=dao.Delete(number);
if(rows)
{
Toast.makeText(Safewei2_activity.this, "删除成功", Toast.LENGTH_SHORT).show();
   list.remove(infos);
   notifyDataSetChanged();

}
else{
Toast.makeText(Safewei2_activity.this, "删除失败", Toast.LENGTH_SHORT).show();
}

}
});

return  convertView;
}
 
 
 }
 
 
static class ViewHolder{
 TextView number;
 TextView mode;
 ImageView img;
}


}


======================================================
数据库代码

public ArrayList<BlackpeopleInfo> Getpagelist2(int startindex,int maxsize)
{
ArrayList<BlackpeopleInfo> list=new ArrayList<BlackpeopleInfo>();
SQLiteDatabase db=helper.getReadableDatabase();

Cursor cursor = db.rawQuery("select number,mode from blacknumber limit ? offset ?", new String[]{String.valueOf(maxsize),
               String.valueOf(startindex)});

while(cursor.moveToNext())
{
BlackpeopleInfo info=new BlackpeopleInfo();
info.setMode(cursor.getString(1));
info.setNumber(cursor.getString(0));
list.add(info);

}
cursor.close();
db.close();
return list;

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值