step1:创建一个LinearLayout线性布局,属性值为vertical
里面写一个ListView列表控件
<ListViewandroid: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:设置条目idreturn 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() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, list.get(position).toString(), Toast.LENGTH_SHORT).show();}});
step15:条目的长按事件
listView.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic 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;}});
这样就可以运行了!