Android Dialog 列表的创建
2016-02-01 17:04
519 查看
一.概述
关于Dialog基本形式的创建我就不说了,很简单,下面说说列表的实现。列表对话框主要有四种:普通列表、单选列表、双选列表、自定义视图的列表,下面我们一个个来分析。
二.实现
1.普通列表[code] AlertDialog.Builder builder = new AlertDialog.Builder(this); //设置标题 builder.setTitle("请选择"); //设置图标 builder.setIcon(R.mipmap.ic_launcher); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MainActivity.this,"你点击的是条目"+i,Toast.LENGTH_SHORT).show(); } }); builder.create(); builder.show();
2.单选列表
默认选中第一个条目
[code] AlertDialog.Builder builder = new AlertDialog.Builder(this); //设置标题 builder.setTitle("请选择"); //设置图标 builder.setIcon(R.mipmap.ic_launcher); builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MainActivity.this,"你点击的是条目"+i,Toast.LENGTH_SHORT).show(); } }); builder.create(); builder.show();
3.多选列表
[code] boolean[] checkdItems = {true,false,false,false}; AlertDialog.Builder builder = new AlertDialog.Builder(this); //设置标题 builder.setTitle("请选择"); //设置图标 builder.setIcon(R.mipmap.ic_launcher); builder.setMultiChoiceItems(items, checkdItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i, boolean b) { if(b){ Toast.makeText(MainActivity.this,"条目"+i+"被选中",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(MainActivity.this,"条目"+i+"取消选中",Toast.LENGTH_SHORT).show(); } } }); builder.create(); builder.show();
构建两个数组,一个是条目内容,一个是默认选中的条目。
4.自定义视图列表
每个Item的样式是我们自定义实现的,主要使用的方法是setAdapter,下面看怎样实现。
先给出item的布局文件
[code]<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:padding="5dp" android:orientation="horizontal" android:gravity="center" android:layout_height="wrap_content"> <ImageView android:id="@+id/imageview" android:src="@mipmap/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/textview" android:text="你好" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
一个线性布局,里面水平放置图片和文字
然后构建我们的数据
[code] public List<ItemAdapter.DataHolder> iniDatas(){ List<ItemAdapter.DataHolder> list = new ArrayList<ItemAdapter.DataHolder>(); ItemAdapter.DataHolder dataHolder1 = new ItemAdapter.DataHolder("条目一",R.drawable.img1); ItemAdapter.DataHolder dataHolder2 = new ItemAdapter.DataHolder("条目二",R.drawable.img2); ItemAdapter.DataHolder dataHolder3= new ItemAdapter.DataHolder("条目三",R.drawable.img3); list.add(dataHolder1); list.add(dataHolder2); list.add(dataHolder3); return list; }
然后根据数据设置adapter
[code]public class ItemAdapter extends BaseAdapter { public List<DataHolder> list ; LayoutInflater inflater; public ItemAdapter(Context context,List<DataHolder> list){ this.list = list; inflater = LayoutInflater.from(context); } @Override public int getCount() { return list.size(); } @Override public DataHolder getItem(int i) { if(i==getCount()|| list==null){ return null; } return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int position, View convertView, ViewGroup viewGroup) { ViewHolder holder; if(convertView == null){ holder = new ViewHolder(); convertView = inflater.inflate(R.layout.tem_layout, null); holder.icon = (ImageView) convertView.findViewById(R.id.imageview); holder.title = (TextView) convertView.findViewById(R.id.textview); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } holder.icon.setImageResource(getItem(position).imgId); holder.title.setText(getItem(position).title); return convertView; } public static class ViewHolder{ public ImageView icon; public TextView title; } public static class DataHolder { public String title; public int imgId; //数据实体 public DataHolder(String title,int imgId){ this.title = title; this.imgId = imgId; } } }
最后一步
[code] ItemAdapter adapter = new ItemAdapter(this,iniDatas()); AlertDialog.Builder builder = new AlertDialog.Builder(this); //设置标题 builder.setTitle("请选择"); //设置图标 builder.setIcon(R.mipmap.ic_launcher); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MainActivity.this,"你点击的是"+i,Toast.LENGTH_SHORT).show(); } }); builder.create(); builder.show();
相关文章推荐
- android 窗口的使用
- Android Fragment是什么
- AS不能发布release版本的解决方案
- 自学android 坑2
- Android 模拟屏幕点击和物理按键方式
- android学习中知识点集合(未完)
- Android开发之通过反射获取到挂断电话的API
- Android中使用SurfaceView和Canvas来绘制动画
- Android:自己定义输入法(输入password时防止第三方窃取)
- android *** Layout 08 AutoCompleteTextView && Adapter
- Android原生下拉刷新SwipeRefreshLayout
- 获取本机 Android 默认sha1 秘钥
- 获取本机 Android 默认sha1 秘钥
- Android Studio使用.so库的方式(科大飞讯为例)
- Android 反编译apk 详解
- Android 反编译apk 详解
- Android四大核心组件之contentProvider
- 使用AndroidStudio编译NDK的方法及错误解决方案
- 使用AndroidStudio编译NDK的方法及错误解决方案
- Android利用V4包中的SwipeRefreshLayout实现上拉加载