ToDoList 详解


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

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


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

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


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

              


位置: 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"?>       ToDoList     New To Do Item     New To Do Item     Settings   


位置: 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 todoItems = new ArrayList();          //创建ArrayAdapter以便讲数组绑定到ListView         final ArrayAdapter aa;         aa = new ArrayAdapter(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, 使用相应的适配器(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

环境如下:




转载于:https://blog.51cto.com/spikeking/1387913

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android修改、设置锁屏密码
  3. android 调用系统自带的设置时间日期对话框
  4. 移植Android(安卓)遇到的问题
  5. android studio信鸽推送10004错误
  6. Android(安卓)APK JNI sample (JAVA JNI)
  7. Android开发笔记
  8. Android(安卓)单选/复选控件
  9. android studio 打包jar 及混淆

随机推荐

  1. 如何安装MySQL Community Server 5.6.39
  2. mysql中影响数据库性能的因素讲解
  3. MySQL 数据备份与还原的示例代码
  4. mysql5.7.20第一次登录失败的快速解决方
  5. MySql总弹出mySqlInstallerConsole窗口的
  6. Windows10下mysql 5.7.21 Installer版安
  7. mysql5.7.20 安装配置方法图文教程(win10
  8. win10下mysql 5.7.23 winx64安装配置方法
  9. CentOS下彻底卸载mysql的方法
  10. Windows8下mysql 5.6.15 安装配置方法图