ListView和条目点击事件、条目长按事件

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;
    }
});

这样就可以运行了!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值