您好,登錄后才能下訂單哦!
版權(quán)所有, 禁止轉(zhuǎn)載, 如有需要, 請(qǐng)站內(nèi)聯(lián)系.
本文地址: http://blog.csdn.net/caroline_wendy/article/details/21223995
ToDoList是一個(gè)Android的入門程序, 包含兩個(gè)控件, EditText(編輯文本),ListView(列表視圖), 放置在LinearLayout(線性布局);
需要重寫監(jiān)聽按鍵(setOnKeyListener), 使用適配器(Adapter)進(jìn)行關(guān)聯(lián);
<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(控件高度), 兩個(gè)屬性, Android系統(tǒng)會(huì)做出相應(yīng)的匹配;
2. id屬性, 是為了在R文件中注冊(cè), 在程序邏輯(java文件)中使用, 所以使用"@+id", "+"表示添加的意思;
3. LinearLayout控件(線性), 需要指明orientation(方向), 使其內(nèi)部控件有序排列;
4. layout的匹配常用的兩種屬性: match_parent(匹配父控件, 填充),wrap_content(包圍內(nèi)容, 根據(jù)內(nèi)容最小化);
<?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
注意:
使用字符串的形式, 可以使表示層和應(yīng)用邏輯層分離, 可以擴(kuò)展其他語言;
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); //獲取對(duì)UI組件的引用 ListView myListView = (ListView)findViewById(R.id.myListView); final EditText myEditText = (EditText)findViewById(R.id.myEditText); //final 表示常量 //獲取對(duì)UI組件的引用 final ArrayList<String> todoItems = new ArrayList<String>(); //創(chuàng)建ArrayAdapter以便講數(shù)組綁定到ListView final ArrayAdapter<String> aa; aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoItems); //將ArrayAdapter綁定到ListView myListView.setAdapter(aa); //監(jiān)聽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()函數(shù);
2. 得到特定UI組件的引用, 使用findViewById()函數(shù), 然后進(jìn)行類型轉(zhuǎn)換;
3. 可以new一些存儲(chǔ)函數(shù)如ArrayList<String>, 使用相應(yīng)的適配器(ArrayAdapter), 關(guān)聯(lián)至UI組件, 如simple_list_item_1表示列表視圖(ListView)的第一項(xiàng);
4. 組件添加適配器, 使用setAdapter()方法;
5. 組件的監(jiān)聽方法(setOnKeyListener), 監(jiān)聽按鍵,重寫(override)onKey()方法, 判斷是否按鍵, 做出相應(yīng)處理;
6. DPAD, 即d-pad手柄, android包含各種各樣的硬件, 可以自由使用;
如果R文件未找到, java異常報(bào)錯(cuò), 則參考: http://blog.csdn.net/caroline_wendy/article/details/21222905
ToDoList代碼下載: http://download.csdn.net/detail/u012515223/7038327
環(huán)境如下:
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。