• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

绝望生鱼片

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Android学习笔记——Day4

13)ListView用法:
i、继承Activity
A、一个选项一个值
public class List1 extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 手工创建一个ListView对象
        ListView listView = new ListView(this);
        // 声明数据数组
        /*String[] info = {"a","b","c","d","e","f","g","h","i"};
        // 创建一个ArrayAdapter,传递数组的值
        ArrayAdapter<String> adapter =
            new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,info);
        // 把ArrayAdapter作为适配器传递给ListView
        listView.setAdapter(adapter);
        this.setContentView(listView);*/
       
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.degree,android.R.layout.simple_list_item_1);
        listView.setAdapter(adapter);
        this.setContentView(listView);
    }
}
B、一个选项两个值
public class List2 extends Activity {
    // 先声明一个ArrayList<Map<String,Object>>
    private ArrayList<Map<String, Object>> data;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 加载数据
        loadData();
        ListView listView = new ListView(this);
        //关键代码**********
        SimpleAdapter adapter = new SimpleAdapter(this, data,
                android.R.layout.simple_list_item_2,
                new String[] { "名字", "电话" }, new int[] { android.R.id.text1,
                        android.R.id.text2 });
        listView.setAdapter(adapter);
        // 为ListView注册监听器
        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                // setTitle(parent.getItemAtPosition(position).toString());
                // setTitle(position+"          "+id);
                Map<String, Object> map = data.get(position);
                String sex = (String) map.get("性别");
                setTitle("当前客户性别为:" + sex);
            }
        });
        setContentView(listView);
    }

    private void loadData() {
        data = new ArrayList<Map<String, Object>>();
        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("名字", "joe");
        map1.put("电话", "13788888888");
        map1.put("性别", "男");
        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("名字", "tom");
        map2.put("电话", "13766666666");
        map2.put("性别", "女");
        data.add(map1);
        data.add(map2);
    }
}
ii、继承ListActivity,采用这种方式不需让ListActivity手动注册什么监听器,直接覆盖父类的onListItemClick方法就可以了
public class List3 extends ListActivity {
    private ArrayList<Map<String, Object>> data;
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        loadData();
        SimpleAdapter adapter = new SimpleAdapter(this, data,
                android.R.layout.simple_list_item_2,
                new String[] { "名字", "性别" }, new int[] { android.R.id.text1,
                        android.R.id.text2 });
        this.setListAdapter(adapter);
    }
    protected void onListItemClick(ListView l, View v, int position, long id) {
        Map<String, Object> map = data.get(position);
        String tel = (String) map.get("电话");
        setTitle("当前客户电话为:" + tel);
    }
    private void loadData() {
        data = new ArrayList<Map<String, Object>>();
        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("名字", "joe");
        map1.put("电话", "13788888888");
        map1.put("性别", "男");
        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("名字", "tom");
        map2.put("电话", "13766666666");
        map2.put("性别", "女");
        data.add(map1);
        data.add(map2);
    }
}

14)对话框:Dialog是一切对话框的基类,需要注意的是,Dialog虽然可以在界面中显示,但是并非继承于习惯的View类,而是直接从Object继承,类似于Activity,Dialog也是有生命周期的,它的生命周期由Activity维护,Activity负责生成,保存,恢复它.在生命周期的每个阶段都有一些回调方法供系统反向调用.
AlertDialog是Dialog的一个子类,AlertDialog也是Android系统中最常用的对话框之一.一个AlertDialog可以有2个到3个按钮,可以对一个AlertDialog设置title以及Message.不能直接通过AlertDialog的构造参数生成一个AlertDialog,而是通过它的一个静态内部类AlertDialog.Builder来构造的,如:

使用AlertDialog:
AlertDialog类是Dialog类的子类。它默认提供了3个按钮和一个文本消息。这些按钮可以按需要来使他们显示或隐藏。下列代码将创建一个AlertDialog对话框,对话框上将向用户展示一个问题以及备选的yes/no答案:
AlertDialog dialog = new AlertDialog.Builder(context).create();
dialog.setMessage(”Do you play cricket?”);
dialog.setButton(”Yes”, myOnClickListener);
dialog.setButton2(”No”, myOnClickListener);
dialog.show();

myOnClickListener这个事件监听器的代码可以类似如下:

public void onClick(DialogInterface dialog, int i) {
switch (i) {
case AlertDialog.BUTTON1:

break;
case AlertDialog.BUTTON2:

break;
}
}

AlertDialog.Builder:
AlertDialog类中有一个内部类,名为‘Builder’,Builder类提供了为对话框添加多选或单选列表,以及为这些列表添加事件处理的功能。另外,这个Builder类将AlertDialog对话框上的3个按钮按照他们的位置分别称呼为:PositiveButton, NeutralButton, NegativeButton
下列代码是一个多选列表的例子:


Activity托管对话框:
Android也提供了创建对话框的快捷方式,在Activity中可以通过如showDialog(), onCreateDialog(), onPrepareDialog(),dismissDialog(), removeDialog()等方法来创建和管理对话框。
Activity的onCreateDialog方法用于在创建并显示对话框的时候调用,比如:

@Override
protected Dialog onCreateDialog(int id) {
return new AlertDialog.Builder(this).setMessage(”How are you?”).setPositiveButton(
”Fine”,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {

}
}).setNegativeButton(”Not so good”, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {

}
}
).create();
}



A、使用编程来创建对话框内容
//核心代码: 先创建一个AlertDialog.Builder, 利用它创建一个AlertDialog对象
AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
builder2.setTitle("核心提示:");
builder2
    .setMessage("AlertDialog是Dialog的一个子类,AlertDialog也是Android系统中最常用的对话框之一.一个AlertDialog可以有2个到3个按钮,可以对一个AlertDialog设置title以及Message.不能直接通过AlertDialog的构造参数生成一个AlertDialog,而是通过它的一个静态内部类AlertDialog.Builder来构造的.");
builder2.setIcon(R.drawable.ic_menu_close_clear_cancel);
//设置确定按钮
builder2.setPositiveButton("确定",
        new DialogInterface.OnClickListener() {
                        @Override
            public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                }
});
//设置普通按钮
builder2.setNeutralButton("查看详细",
        new DialogInterface.OnClickListener() {
                      
            public void onClick(DialogInterface dialog, int which) {
                }
});
//设置取消按钮
builder2.setNegativeButton("取消",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
}
});
builder2.show();

B、使用XML文件来创建对话框内容
在layout目录下创建dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:stretchColumns="1">

    <TableRow android:id="@+id/dialog_TableRow01"
        android:layout_width="fill_parent" android:layout_height="wrap_content">
        <TextView android:text="名字:" android:id="@+id/dialog_TextView01"
            android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        <EditText android:id="@+id/dialog_EditText01"
            android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
    </TableRow>
    <TableRow android:id="@+id/dialog_TableRow02"
        android:layout_width="fill_parent" android:layout_height="wrap_content">
        <TextView android:text="密码:" android:id="@+id/dialog_TextView02"
            android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        <EditText android:id="@+id/dialog_EditText02"
            android:password="true" android:layout_width="fill_parent"
            android:layout_height="wrap_content"></EditText>
    </TableRow>

</TableLayout>

// 利用LayoutInflater可以加载一个layout文件
            LayoutInflater flater = LayoutInflater.from(this);
            View v = flater.inflate(R.layout.dialog3, null);
            // 创建AlertDialog
            AlertDialog.Builder builder3 = new AlertDialog.Builder(this);
            builder3.setIcon(R.drawable.ic_menu_edit);
            builder3.setTitle("信息编辑");
            builder3.setView(v);
            builder3.setPositiveButton("添加",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                                                       
                        }
                    });
            // 1.不能2个都是setPositiveButton,这样后面的这个会覆盖前面的按钮
            // 2.同时也要注意,这里的OnClickListener是DialogInterface下面的OnClickListener
            builder3.setNegativeButton("取消",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            setTitle("选择了取消");
                        }
                    });
            builder3.show();


C、进度对话框:
ProgressDialog dialog = new ProgressDialog(this);
dialog.setTitle("正在下载歌曲");
dialog.setMessage("  请等待");
dialog.show();


Activity生命周期方法:

android数据存储: 4种方式
1. SharedPreferences
    底层使用xml文件保存数据, 优点是操作简单,结构简单
    缺点是不适宜保存一些复杂,海量数据
2. 文件 + IO
   优点: 有java基础就很方便学习
   缺点: 操作,检索,更新不方便
3. SQLite   android内部数据库  
4. 内容提供器
   搭建数据共享的桥梁


SharedPreferences存储数据:
1)保存数据:
 
 SharedPreferences sp = this.getSharedPreferences("ACCOUNT", Activity.MODE_PRIVATE);
 //  如果是要完成写操作, 那么必须先创建 编辑器对象
 Editor edit = sp.edit();
 //  完成信息的编辑
 edit.putString("user","admin");
 edit.putString("passwd","123456");
 //  提交数据
 edit.commit();
2)取出数据:
 SharedPreferences sp = this.getSharedPreferences("ACCOUNT", Activity.MODE_PRIVATE);
 //  如果是要完成写操作, 那么必须先创建 编辑器对象
 Editor edit = sp.edit();
String name = sp.getString("user","aaaaaaaaaaaaaaaaaa");
String passwd = sp.getString("passwd","bbbbbbbbbbbbbbbbb");   

posted on 2011-07-07 16:50  绝望生鱼片  阅读(352)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3