Android ListView 的基本用法

首先扯点别的:最近刚买了一个摇杆(玩拳皇97用的,拳霸的)。开始我以为买了摇杆我的拳皇水平会迅速提高,然而,上个星期6和建总打了一天被虐的惨啊,也是艰难。当时就想砸摇杆啊,最后还是忍住了,不能怪摇杆,还是自己的技术手法不行,还要多加练习。行,接下来进入正题吧。

第一点 : 前段时间发现了一个替代ListView的控件 RecyclerView,从网上看了看资料,说的天花乱坠,自己集成到自己的项目里,用了用,开始感觉还是不错的,但是当RecyclerView要展示的数据增加的时候,尤其是从网上加载图片的时候,就会变得十分的卡顿,而且RecyclerView并没有自带的点击事件和长按事件,也没有分割线,这三样都得自己实现,也是比较麻烦,痛定思痛,最后还是依然决定再回到ListView的怀抱里。好久时间没用ListView,已经很生疏了,今天就记载了一下ListView的简单用法。ps:从网络上加载图片还是使用universal-image-loader吧,别用Volley了,真心不好使。
先看效果,感觉有用再往下看

子项点击事件

子项点击事件

子项长按事件,弹出删除对话框

子项长按事件,弹出删除对话框
接下啦就直接上代码了,MainActivity.java,代码很简单,直接看注释就行了

package com.example.listviewdemo;

import java.util.ArrayList;
import java.util.List;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;


public class MainActivity extends ActionBarActivity {

    private ListView listView;
    private List<MyBean>list;//数据源
    private MyAdapter adapter;//自定义的适配器
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView=(ListView) findViewById(R.id.listView);
        setAdapter();
        //listview添加子项的点击事件
        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {
                //点击一项的时候,给一个Toast
                MyBean bean=adapter.getItem(position);
                Toast.makeText(MainActivity.this, bean.getTitle(), Toast.LENGTH_SHORT).show();
            }
        });

        //listview添加子项的长按事件
        listView.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int position, long arg3) {
                deleteItem(position);
                return true;
            }
        });
    }



    /**
     * 长按的时候删除listview中的某一项
     * @param position 要删除的子项在listview中的位置
     */
    private void deleteItem( final int position){

        AlertDialog dialog=new AlertDialog.Builder(MainActivity.this)
        .setTitle("提示")
        .setMessage("确实要删除当前项吗?")
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                list.remove(position);
                adapter.notifyDataSetChanged();
            }
        })
        .setNegativeButton("取消", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // 点击取消。没有动作

            }
        })
        .show();
    }
    /**
     * 该listview 添加适配器
     */
    private void setAdapter(){
        list=new ArrayList<MyBean>();
        //给list装几条数据
        initData();
        adapter=new MyAdapter(MainActivity.this, R.layout.listview_item, list);
        listView.setAdapter(adapter);
        //当adapter中数据改变的时候时,通知listview
        adapter.notifyDataSetChanged();
    }



    /**
     * 给list初始化数据
     */
    private void initData() {
        for (int i = 0; i <10; i++) {
            MyBean bean=new MyBean("Title "+i, "Detail "+i);
            list.add(bean);
        }
    }
}

MyAdapter .java

package com.example.listviewdemo;

import java.util.List;

import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class MyAdapter extends ArrayAdapter<MyBean> {

    private  int resource;
    private Context context;
    public MyAdapter(Context context, int resource, List<MyBean> lists) {
        super(context, resource, lists);
        this.context=context;
        this.resource=resource;

    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view;
        ViewHolder holder;
        MyBean bean=getItem(position);
        if (convertView==null) {
            view=LayoutInflater.from(context).inflate(resource, parent, false);
            holder=new ViewHolder();
            holder.textViewTitle=(TextView) view.findViewById(R.id.textviewTitle);
            holder.textViewDetail=(TextView) view.findViewById(R.id.textviewDetail);
            view.setTag(holder);

        } else {
            view=convertView;
            holder=(ViewHolder) view.getTag();
        }
        holder.textViewTitle.setText(bean.getTitle());
        holder.textViewDetail.setText(bean.getDetail());
        return view;

    }

    //内部类,用来提高listView的性能
    private static class ViewHolder{
        TextView textViewTitle;
        TextView textViewDetail;
    }



}


MyBean.java 实体类

package com.example.listviewdemo;

public class MyBean {

    private String title;
    private String detail;
    public MyBean(String title, String detail) {
        this.title=title;
        this.detail=detail;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getDetail() {
        return detail;
    }
    public void setDetail(String detail) {
        this.detail = detail;
    }

}

行,差不多就是这样了,今天天气比较冷,赶紧钻进被窝看小说吧,这双腿冻得冰凉啊。如果想要完整的工程代码连接地址如下http://download.csdn.net/detail/leilifengxingmw/9448400

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值