SimpleAdapter 适配器用于绑定到条目上
五个参数:
- 上下文对象
- person数据,就是要绑定到条目的数据
- 需要绑定到哪个条目界面
- 把data里面key值为name的绑定到R.id.name,就是第五个参数,以此类推
- 需要绑定的条目界面上的哪个控件id,以此类推
listView.setAdapter(adapter); 为listView设置适配器
setAdapter内部的操作代码逻辑
//为listView设置设配器后首先调用getCount,用于得到集合里面数据总数
int total=adapter.getCount();
//然后计算出本窗口能显示多少个条目,翻滚下面就是从7往后
int perpage=7;
//迭代
for (int i=0;i<perpage;i++){
View view=adapter.getView(i,);//用于得到条目对应的View
//然后就是显示条目
package com.example.mylistview;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
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);
show();
}
private void show() {
//把person数据放到data集合中
List<Person> personList=service.getScrolld(0,20);//取得数据库中的数据,0-20为一页
//因为SimpleAdapter第二个参数用的是以map形式存储的数据,所有要new ArrayList<HashMap<String,Object>>
List<HashMap<String,Object>> data=new ArrayList<HashMap<String,Object>>();
for (Person person:personList){
HashMap<String,Object> item=new HashMap<>();
item.put("name", person.getName());
item.put("phone",person.getPhone());
item.put("amount",person.getAmount());
item.put("id",person.getId());
data.add(item);
}
//得到数据后要用到适配器绑定到条目上
//1.上下文对象 2.person数据,就是要绑定到条目的数据 3.需要绑定到哪个条目界面
SimpleAdapter adapter=new SimpleAdapter(this,data,R.layout.list_item,
//把data里面key值为name的绑定到R.id.name,以此类推
new String[]{"name","phone","amount"},
//需要绑定的条目界面上的哪个控件id
new int[]{R.id.name,R.id.phone,R.id.amount});
listView.setAdapter(adapter);//为listView设置适配器
}
}