//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)});
{
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;
}