您的位置:首页 > 移动开发 > Android开发

Android数据缓存加载,listview显示

2016-03-17 09:46 435 查看
//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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: