今天将好好分以下关于Android的对话框的问题和在Android中使用ListView遇到的一些问题。
一、关于对话框我们并不陌生(Dialog),但是对于Android中的Dialog也是使用起来十分的方便,就只是调用一个名为AlertDialog的类。
在使用中可以这么写
new AlertDialog.Builder(Context context).setTitle("我是标题").setMessage("提示信息").setPositiveButton("确定",new DialogInterface.onClickListener()
{
onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(DialogDemo.this).setTitle("输入对话框").setIcon(R.drawable.icon).setView(new EditText(DialogDemo.this)).setPositiveButton("确定",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).show();
}
});
这个就实现了一个简单的确定对话框,我们来分析一下,系统调用AlertDialog类的.Builder()方法来创建一个最简单的标题,虽说是简单,但是五脏俱全,设置标题,设置提示信息,设置图标,设置按钮全部具有。如果大家需要更加复杂的对话框,就完全可以在其基础上扩展。
在此之前我也是参照的别人的对话框源码进行学习,本来想建立一个输入的对话框在哪里调用方法.setView(new EditText(Context context)),再次一定要注意这个context即上下文这个上下文的定义一定要基于当前的Activity,书写格式为
.setView(new EditText(类名.this)).show();
再看别人的源代码中别人写的是
new AlertDialog.Builder(self)
.setTitle("确认")
.setMessage("确定吗?")
.setPositiveButton("是", null)
.setNegativeButton("否", null)
.show()
这样写我试过了报错呀,坑爹呀,那个self并不是系统的常量,我们还是规规矩矩的写成 类名.this的形式绝对正确。
还有我还要再次说明一下一些关于ListView中使用到的一些类的情况,
在正常使用ListView的时候,会常常使用
ListView.setAdapter(new Adapter<?>(Context,int layout,List<?>))
但是有时候我们需要扩展的时候我们还可能用到SimpleAdapter类,SimpleCursorAdapter类,这些时候我把网上搜到的一些资源再次跟大家分享一下:
SimpleAdapter类使用方法
SimpleAdapter的构造函数是:
public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
官方说明了其各个参数含义,我这里根据自己的理解解释下:
第一个context,很明显大家根据英文可以知道是上下文的意思,它官方的意思是:SimpleAdapter所要运行关联到的视图,这个是什么呢?就是你这个SimpleAdapter所在的Activity(一般而言),所以这个参数一般是“前Activity的名字.this”
第二个是一个泛型只要是一个List就行,这一般会想到是ArrayList,而他内部存储的则是Map或者继承自Map的对象,比如HashMap,这些语法都是Java的基本语法,不再详述了!这里呢是作为数据源,而且每一个ArraList中的一行就代表着呈现出来的一行,Map的键就是这一行的列名,值也是有列名的。
第三个资源文件,就是说要加载这个两列所需要的视图资源文件,一般在Layout建立相应的.xml文件,你可以左边一个TextView右边一个TextView,目的在于呈现左右两列的值!
第四个参数是一个String数组,主要是将Map对象中的名称映射到列名,一一对应
第五个是将第四个参数的值一一对象的显示(一一对应)在接下来的int形的id数组中,这个id数组就是LayOut的xml文件中命名id形成的唯一的int型标识符
这样也就达到了数据的列表呈现!