展会信息港展会大全

Android之ListView分页数据加载
来源:互联网   发布日期:2015-11-26 13:15:02   浏览:1774次  

导读:1、效果如下:实例如下: 上图的添加数据按钮可以换成一个进度条 因为没有数据所以我加了一个按钮添加到数据库用于测试;一般在服务器拉去数据需要一定的时间,所以可以弄个进度条来提示用户:...

1、效果如下:

实例如下:上图的添加数据按钮可以换成一个进度条因为没有数据所以我加了一个按钮添加到数据库用于测试;一般在服务器拉去数据需要一定的时间,所以可以弄个进度条来提示用户:

点击加载按钮的时候,向数据库读取一次数据,把读取的数据追加到原来的数据集中;然后显示出来

package com.exampleandroid.xiong.listviewpages;

public class News {

private String title;

private int id;

/**

*

* @return 返回新闻标题

*/

public String getTitle() {

return title;

}

/**

*

* @param title

*设置新闻标题

*/

public void setTtitle(String title) {

this.title = title;

}

/**

*

* @return 返回新闻标识

*/

public int getId() {

return id;

}

/**

*

* @param id

*设置新闻标识

*/

public void setId(int id) {

this.id = id;

}

}

package com.exampleandroid.xiong.listviewpages;

import java.util.ArrayList;

import java.util.List;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

public class GetNews {

/**

*

* @param page

*需要加载的页数 每页数据5条

* @param dbnews

*SQLiteOpenHelper子类

* @return 返回新闻加载的数据

*/

public List getListNews(int page, DbSqliteNews dbnews) {

List list = new ArrayList();

String sql = "select* from tb_newstilewhere news_id not in(select news_id from tb_newstileLIMIT "

+ 5 * (page - 1) + ")LIMIT " + 5 * page;

Cursor cursor = dbnews.getReadableDatabase().rawQuery(sql, null);

while (cursor.moveToNext()) {

News news = new News();

news.setTtitle(cursor.getString(1));

news.setId(cursor.getInt(0));

list.add(news);

}

cursor.close();

return list;

}

/**

* 插入100条数据用于测试

*

* @param dbnews

*SQLiteOpenHelper子类

*/

public void insertData(DbSqliteNews dbnews) {

SQLiteDatabase datas = dbnews.getWritableDatabase();

datas.beginTransaction();

try {

for (int i = 0; i

package com.exampleandroid.xiong.listviewpages;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

public class DbSqliteNews extends SQLiteOpenHelper {

public DbSqliteNews(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

}

// 创建数据库表

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL("create table tb_newstile(news_id integer ,news_title varchar(100))");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

package com.exampleandroid.xiong.listviewpages;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

public class MainActivity extends Activity {

private ListView newShow_list;

private Button loadmore, adddata;

// ListView加载的数据

private List shownews;

private GetNews getnews;

private DbSqliteNews dbnews;

// 加载的页数

private int pagecount = 1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

newShow_list = (ListView) findViewById(R.id.newsShow_list);

loadmore = (Button) findViewById(R.id.loadmore_bt);

adddata = (Button) findViewById(R.id.adddata);

dbnews = new DbSqliteNews(this, "new.db", null, 1);

getnews = new GetNews();

final ListAdpaterNews listadpter=new ListAdpaterNews();

//此按钮只为添加测试数据

adddata.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

//插入数据

getnews.insertData(dbnews);

//获取数据

shownews = getnews.getListNews(pagecount, dbnews);

//显示数据

newShow_list.setAdapter(listadpter);

}

});

loadmore.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

pagecount++;

//将数据追加到原集合

shownews.addAll(getnews.getListNews(pagecount, dbnews));

//刷新数据

listadpter.notifyDataSetInvalidated();

}

});

// 第一次加载的数据

shownews = getnews.getListNews(pagecount, dbnews);

newShow_list.setAdapter(listadpter);

}

class ListAdpaterNews extends BaseAdapter {

@Override

public int getCount() {

return pagecount * 5;

}

@Override

public Object getItem(int position) {

return position;

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

View view = LayoutInflater.from(MainActivity.this).inflate(

R.layout.news_title, null);

TextView txttitle = (TextView) view.findViewById(R.id.txt_title);

ImageView images = (ImageView) view

.findViewById(R.id.showimage_title);

images.setBackgroundResource(R.drawable.n_me_l);

txttitle.setText(shownews.get(position).getTitle());

return view;

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

源码下载:http://download.csdn.net/detail/x605940745/6800461

转载请注明出处:http://blog.csdn.net/x605940745

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港