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我的官方文档--No.1 Introduction to Android
  2. Android开发者指南(11) —— Optimizing Apps for Android(安卓)
  3. android studio windows 报错 ninja: build stopped: subcommand
  4. Android(安卓)中使用HttpUrlConnection实现get请求服务器
  5. android shape的使用
  6. 使用Android(安卓)Studio搭建Android集成开发环境(图文教程)
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. ANDROID 应用退出
  2. Android中的跨进程通信方法实例及特点分
  3. 定制你自己的Andoird桌面Launcher
  4. android在EditText中插入表情图片
  5. Android中Uri的使用
  6. 8步教你打开Android之门 NDK入门教程
  7. DRM in Android
  8. 构建 Android 手机 RSS 阅读器
  9. 30+关于如何成为更好Android开发者的短小
  10. Android中Content Provide