Android ListView 的基本用法

来源:互联网 发布:我知你忌讳是什么意思 编辑:程序博客网 时间:2024/06/05 11:04

首先扯点别的:最近刚买了一个摇杆(玩拳皇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 0