android控件listview怎样显示数据库数据呢?

android控件listview怎样显示数据库数据呢?,第1张

先创建一个帮助类BaseHelper,继承SQLiteOpenHelper,然后在获得读取的权限,BaseHelper.getReadableDatabase()查询:Cursor

cursor

=

db.query(TABLE_NAME,str,null,null,null,null,null),接着放到adapter里面然后就显示出来SimpleCursorAdapter

adapter

=

new

SimpleCursorAdapter(this,

R.layout.showcontact,

cursor,

FROM,

TO)

setListAdapter(adapter)。大概流程就这样,具体看帮助文档或者百度+google

CursorAdapter

继承于BaseAdapter是个虚类,它为cursor和ListView提供了连接的桥梁。

public abstract class

CursorAdapter

extends BaseAdapter

直接子类只有ResourceCursorAdapter

Class Overview

Adapter that exposes data from a Cursor to a ListView widget.

The Cursor must include a column named "_id" or this class will not work.

注意cursor的必须要有个命名为"_id"的列。比如Contacts._ID就为"_id"

必须实现以下函数

abstract ViewnewView(Context context, Cursor cursor, ViewGroup parent)

Makes a new view to hold the data pointed to by cursor.

abstract voidbindView(View view, Context context, Cursor cursor)

Bind an existing view to the data pointed to by cursor

注意:

newView该函数第一次回调用后,如果数据增加后也会再调用,但是重绘是不会调用的。

数据增加后,回调用该函数来生成与新增数据相对应的view。

bindView函数第一次回调用后,如果数据更新也会再调用,但重绘会再次调用的。

【总的来说应该是在调用bindView如果发现view为空会先调用newView来生成view】

i

[java]

view plaincopy

<span style="font-size:16px">mport java.util.List

import android.app.Activity

import android.app.ListActivity

import android.os.Bundle

import android.os.Handler

import android.content.Context

import android.content.ContentValues

import android.database.Cursor

import android.view.LayoutInflater

import android.view.View

import android.widget.ListView

import android.view.ViewGroup

import android.widget.ArrayAdapter

import android.widget.CursorAdapter

import android.widget.TextView

import android.provider.ContactsContract.Contacts

import android.provider.ContactsContract.RawContacts

import android.view.View.OnClickListener

import android.widget.Button

public class HelloCursor extends ListActivity {

private static String[] PROJECTION = new String[] { Contacts._ID,

Contacts.DISPLAY_NAME }

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

setContentView(R.layout.main)

Cursor c = getContentResolver().query(Contacts.CONTENT_URI, PROJECTION,

null, null, Contacts.DISPLAY_NAME + " COLLATE NOCASE")

startManagingCursor(c)

MyCursorAdapter adapter = new MyCursorAdapter(this, R.layout.list_row,

c)

this.setListAdapter(adapter)

Button button = (Button)findViewById(R.id.Button01)

OnClickListener listener=new OnClickListener(){

@Override

public void onClick(View v) {

doAction()

}

}

button.setOnClickListener(listener)

mHandler = new Handler()

}

private String[] mStrings = { "hubin", "hudashi", "robin" }

int cnt = 0

private Handler mHandler

class AddContactThread implements Runnable {

public void run() {

int nStringLength = mStrings.length

int randomNumber = 0

ContentValues newValues = new ContentValues()

String tempString = null

randomNumber = (int) (Math.random() % 10)

for (int i = 0i <nStringLengthi++) {

tempString = mStrings + cnt + randomNumber

newValues.put(Contacts.DISPLAY_NAME, tempString)

getContentResolver().insert(RawContacts.CONTENT_URI, newValues)

newValues.clear()

}

cnt++

}

}

AddContactThread addContact=new AddContactThread()

void doAction()

{

mHandler.post(addContact)

}

}

class MyCursorAdapter extends CursorAdapter {

Context context=null

int viewResId

public MyCursorAdapter(Context context, int resource, Cursor cursor) {

super(context,cursor)

viewResId=resource

}

public View newView(Context context, Cursor cursor, ViewGroup parent) {

TextView view =null

LayoutInflater vi = null

vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)

view =(TextView)vi.inflate(viewResId, parent, false)

//v =(TextView)vi.inflate(textViewResourceId,null)

Log.i("hubin","newView"+view)

return view

}

@Override

public void bindView(View view, Context context, Cursor cursor) {

Log.i("hubin","bind"+view)

TextView nameView = (TextView) view

// Set the name

nameView.setText(cursor

.getString(cursor.getColumnIndex("DISPLAY_NAME")))

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6804608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存