Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android的ToDoList 詳解

Android的ToDoList 詳解

編輯:Android開發教程

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組件的引用
	// 查看本欄目更多精彩內容:http://www.bianceng.cn/OS/extra/
        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);  
    }  
      
}

查看本欄目更多精彩內容:http://www.bianceng.cn/OS/extra/

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved