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