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
- Android ListView 的基本用法
- android ListView基本用法
- 【Android基本控件】ListView 的用法
- Android学习笔记----ListView的基本用法
- 基本的listView用法
- Android ListView控件基本用法
- Android ListView控件基本用法
- Android ListView控件基本用法
- Android ListView控件基本用法
- Android ListView控件基本用法
- Android ListView控件基本用法
- Android ListView控件基本用法
- Android的ListView和RecyclerView的基本用法
- Android ListView 最基本的用法,使用SimpleCursorAdapter 。 附例子。
- Android ListView 最基本的用法,使用SimpleCursorAdapter
- Android开发进阶系列(六) ListView的基本用法
- android中ListView的基本组件及用法
- Android ListView的用法
- bzoj2241 打地鼠 暴力&&二维差分
- CodeForces 609 B. The Best Gift(水~)
- GCD详解
- centos6修改YUM源方法
- binary-search-tree-iterator
- Android ListView 的基本用法
- R语言学习:数据结构6-缺失值
- 编写用户侧定时器
- 【quickSort】
- linux学习之c注释
- Cpp_拷贝构造与拷贝赋值
- 数据切分——Atlas读写分离Mysql集群的搭建
- CF 116A Tram
- 如何查找openCV函数源代码