step1:创建一个LinearLayout线性布局,属性值为vertical
里面写一个ListView列表控件
step2:回到MainActivity页面找到ListView这个控件
ListView listView = (ListView) findViewById(R.id.listView);
step3:给ListView设置适配器,(如果不设置的话是看不到列表的,并且没有数据也看不到),适配器,也就是创建一个类
listView.setAdapter(new LVAdapter(MainActivity.this, list));
final List list = new ArrayList();
for (int i = 0; i < 30; i++) {
list.add(new User("卷猫"+i, "女", 18, R.drawable.ic_launcher));
}
step4:继承BaseAdapter(同时要实现四个方法)
step5:写属性
private Context mContext;// 必须要写的属性,不然无法创建视图
private List list;// 数据必须要有 ,不然报错空指针
step6:写构造方法(传数据),用快捷键shift+alt+s,创建就好了【只需要一个有参构造】
step7:需要把数据传到适配器中
listView.setAdapter(new LVAdapter(MainActivity.this, list));
public int getCount() {
// step8:设置条目个数
return list.size();
}
step9:设置条目(第二个方法)——这里的意思就是用过position即集合的index索引来获取一个对象实体
public Object getItem(int position) {
// 设置条目
return list.get(position);
}
step10:获取条目id(第三个)
public long getItemId(int position) {
// step10:设置条目id
return position;
}
step11:设置视图(创建一个layout的xml视图){这里是在第四个方法里面写,也要把返回值写成convertView}
!!!!这一步有点难
public View getView(int position, View convertView, ViewGroup parent) {
// step11:设置视图(创建一个laylout的xml)【可以运行了!!!!!】
convertView = View.inflate(mContext, R.layout.item, null);
这里写第二个参数的时候,导包要导自己的包
❤:做到这来的时候需要创建一个layout,这里的inflate方法的param2是要放一个list的模板布局
step12:找控件(通过convertView找)
ImageView tx = (ImageView) convertView.findViewById(R.id.touxiang);
TextView name = (TextView) convertView.findViewById(R.id.name);
TextView gender = (TextView) convertView.findViewById(R.id.gender);
TextView age = (TextView) convertView.findViewById(R.id.age);
step13:设置内容——首先得到我们想要的对象
User user = list.get(position);
给imageView设置图片 tx.setImageResource(R.drawable.图片名字)
tx.setImageResource(user.getTx());
name.setText(user.getName());
gender.setText(user.getGender());
age.setText(""+user.getAge());//因为年龄是int型 不加“”可能会报错
return convertView;
step14:设置条目的点击事件(在activity中)
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, list.get(position).toString(), Toast.LENGTH_SHORT).show();
}
});
step15:条目的长按事件
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this, "don't click me! I'm not a person!!!!"+position, Toast.LENGTH_SHORT).show();
return false;
}
});
这样就可以运行了!