Android数据缓存加载,listview显示

来源:互联网 发布:php注册登录系统 编辑:程序博客网 时间:2024/05/16 03:16
//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 0
原创粉丝点击