step1:创建一个LinearLayout线性布局,属性值为vertical
里面写一个ListView列表控件
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
step2:回到MainActivity页面找到ListView这个控件
ListView listView = (ListView) findViewById(R.id.listView);
step3:给ListView设置适配器,(如果不设置的话是看不到列表的,并且没有数据也看不到),适配器,也就是创建一个类
listView.setAdapter(new LVAdapter(MainActivity.this, list));
然后回到activity写数据!!!!! 【这里的数据再正常情况下是要用网络获取,在这里就使用静态数据了!】
在这里还要创建一个bean的实体类,这里创建的是user对象,进行封装就可以了!
final List<User> list = new ArrayList<User>();
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<User> list;// 数据必须要有 ,不然报错空指针
step6:写构造方法(传数据),用快捷键shift+alt+s,创建就好了【只需要一个有参构造】
step7:需要把数据传到适配器中
listView.setAdapter(new LVAdapter(MainActivity.this, list));
step8:然后回到adapter适配器哪里!设置条目个数(即继承父类时重写的第一个方法)
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;
}
});
这样就可以运行了!