请联合前几篇文章来看本代码:
/**
*
* @author chrp
*
*自定义布局显示 数据库中的 用户名和电话号码
*/
public class MainActivity_02 extends Activity {
//listView控件
public ListView listView;
//显示所有的用户信息
public List<Person> persons;
//数据库操作的对象
public PersonDao personDao ;
//布局的充气泵
public LayoutInflater inflater;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化数据库操作对象
personDao = new PersonDaoImpl(MainActivity_02.this);
//执行查询数据
persons = personDao.findAll();
//根据服务获取inflater对象
inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
//根据id获取控件对象
listView = (ListView) findViewById(R.id.listView);
//设置显示的数据 Adpater
listView.setAdapter(new PersonListAdapter());
//listView注册事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
/**
* parent :listView
* view 每个条目控件
* position:条目所在的位置
* id:行号 0
*/
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//获取每个条目显示的对象
Person p = (Person) parent.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), p.getName()+"-"+p.getPhone(), Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
class PersonListAdapter extends BaseAdapter{
//告诉你有多少个条目
@Override
public int getCount() {
return persons.size();
}
//返回这个为控件对应的数据
@Override
public Object getItem(int position) {
return persons.get(position);
}
//返回条目所在的位置
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//创建一个显示的控件 每个条目对应的控件
//根据inflate方法 把一个布局文件转换成View控件对象
View v = inflater.inflate(R.layout.listview_item, null);
//findViewById()来获取View布局对象中的控件
TextView tv_Name = (TextView) v.findViewById(R.id.tv_name);
TextView tv_phone = (TextView) v.findViewById(R.id.tv_phone);
Person p = persons.get(position);
//设置显示控件的文本
tv_Name.setText(p.getName());
tv_phone.setText(p.getPhone());
//返回v对象
return v;
}
}
}