SimpleCursorAdapter是以Cursor游标方式传入数据
- 上下文对象
- 需要绑定到哪个条目界面
- 需要传入的Cursor数据
- 把data里面key值为name的绑定到R.id.name,以此类推
- 需要绑定的条目界面上的哪个控件id,以此类推
listView.setAdapter(adapter); 为listView设置适配器
如果这样直接运行是会报错的,因为SimpleCursorAdapter适配器需要传入的Cursor结果集必须包含有(_id)的字段
两个方式改正:
- 把SQL语句用别名返回
- 把数据库的主键改成_id,因为只要求Cursor结果集必须包含有(_id)的字段
package com.example.mylistview;
import androidx.appcompat.app.AppCompatActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import com.example.Service.DBOpenHelper;
import com.example.Service.Person;
import com.example.Service.personService;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private List<Bean> data=new ArrayList<>();
private ListView listView;
private personService service;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=this.findViewById(R.id.listView);
//数据库
DBOpenHelper dbOpenHelper=new DBOpenHelper(this);
dbOpenHelper.getReadableDatabase();
service=new personService(this,dbOpenHelper);
show2();
}
private void show2() {
//SimpleCursorAdapter是以Cursor游标方式传入数据
Cursor cursor=service.getCursorScrolld(0,20);
//如果这样直接运行是会报错的,因为SimpleCursorAdapter适配器需要传入的Cursor结果集必须包含有(_id)的字段
//两个方式改正:把SQL语句用别名返回
SimpleCursorAdapter adapter=new SimpleCursorAdapter(this,R.layout.list_item,cursor,
new String[]{"name","phone","amount"},//把data里面key值为name的绑定到R.id.name,以此类推
new int[]{R.id.name,R.id.phone,R.id.amount},1); //需要绑定的条目界面上的哪个控件id
listView.setAdapter(adapter);//为listView设置适配器
}