ToDoList 详解


版权所有, 禁止转载, 如有需要, 请站内联系.

本文地址:http://blog.csdn.net/caroline_wendy/article/details/21223995


ToDoList是一个Android的入门程序, 包含两个控件, EditText(编辑文本),ListView(列表视图), 放置在LinearLayout(线性布局);

需要重写监听按键(setOnKeyListener), 使用适配器(Adapter)进行关联;


1. 主界面(activity_to_do_list.xml)的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:paddingBottom="@dimen/activity_vertical_margin"    tools:context="mzx.spike.todolist.app.ToDoListActivity">    <EditText        android:id="@+id/myEditText"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="@string/addItemHint"        android:contentDescription="@string/addItemContentDescription"    />    <ListView        android:id="@+id/myListView"        android:layout_width="match_parent"        android:layout_height="wrap_content"    /></LinearLayout>


位置: res->layout->activity_to_do_list.xml

注意:

1. 所有控件, 必须要指定layout_width(控件宽度), layout_height(控件高度), 两个属性, Android系统会做出相应的匹配;

2. id属性, 是为了在R文件中注册, 在程序逻辑(java文件)中使用, 所以使用"@+id", "+"表示添加的意思;

3. LinearLayout控件(线性), 需要指明orientation(方向), 使其内部控件有序排列;

4. layout的匹配常用的两种属性: match_parent(匹配父控件, 填充),wrap_content(包围内容, 根据内容最小化);


2. 字符串(strings.xml)的代码:

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">ToDoList</string>    <string name="addItemHint">New To Do Item</string>    <string name="addItemContentDescription">New To Do Item</string>    <string name="action_settings">Settings</string></resources>


位置: res->values->string.xml

注意:

使用字符串的形式, 可以使表示层和应用逻辑层分离, 可以扩展其他语言;


3. 程序逻辑(ToDoListActivity.java)的代码:

package mzx.spike.todolist.app;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.KeyEvent;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.ArrayAdapter;import android.widget.EditText;import android.widget.ListView;import java.util.ArrayList;public class ToDoListActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_to_do_list);        //获取对UI组件的引用        ListView myListView = (ListView)findViewById(R.id.myListView);        final EditText myEditText = (EditText)findViewById(R.id.myEditText); //final 表示常量        //获取对UI组件的引用        final ArrayList<String> todoItems = new ArrayList<String>();        //创建ArrayAdapter以便讲数组绑定到ListView        final ArrayAdapter<String> aa;        aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoItems);        //将ArrayAdapter绑定到ListView        myListView.setAdapter(aa);        //监听myEditText的Enter键        myEditText.setOnKeyListener(new View.OnKeyListener() {            @Override            public boolean onKey(View view, int i, KeyEvent keyEvent) {                if (keyEvent.getAction() == KeyEvent.ACTION_DOWN)                    if ((i == KeyEvent.KEYCODE_DPAD_CENTER) || (i == KeyEvent.KEYCODE_ENTER)) {                        todoItems.add(0, myEditText.getText().toString());                        aa.notifyDataSetChanged();                        myEditText.setText("");                        return true;                    }                return false;            }        });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {                // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.to_do_list, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}


注意:

1. 指定主界面, 使用setContentView()函数;

2. 得到特定UI组件的引用, 使用findViewById()函数, 然后进行类型转换;

3. 可以new一些存储函数如ArrayList<String>, 使用相应的适配器(ArrayAdapter), 关联至UI组件, 如simple_list_item_1表示列表视图(ListView)的第一项;

4. 组件添加适配器, 使用setAdapter()方法;

5. 组件的监听方法(setOnKeyListener), 监听按键,重写(override)onKey()方法, 判断是否按键, 做出相应处理;

6. DPAD, 即d-pad手柄, android包含各种各样的硬件, 可以自由使用;


4. 生成代码:

如果R文件未找到, java异常报错,则参考:http://blog.csdn.net/caroline_wendy/article/details/21222905


ToDoList代码下载:http://download.csdn.net/detail/u012515223/7038327

环境如下:




更多相关文章

  1. android:windowSoftInputMode属性使用
  2. Android(安卓)WheelView(滑轮组件)使用
  3. Android性能优化——合理进行内存管理
  4. 快速了解Android(安卓)onMeasure() onLayout()
  5. Android使用SAX解析XML(1)
  6. Android(安卓)layout layout_weight属性理解
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. Linux系统Android(安卓)NDK编译环境搭建
  2. 一步一步学android OpenGL ES2.0编程(1)
  3. Android(安卓)char数据类型乱码��解决方法
  4. Android初学笔记(记录自己的学习过程,有不
  5. RxJava2 使用详解一之基础教程
  6. Fragment中使用listview
  7. android虚拟按键的实现
  8. Android网络框架-OkHttp使用
  9. Android读书笔记2-AndroidManifest.xml解
  10. android调用ITelephony类,AIDL实现电话,联