天天看點

Android快速入門的第二個App(講解版) Android快速入門的第二個App(講解版)

Android快速入門的第二個App(講解版)

總結一下todolist這個app制作的大緻步驟。

  1. 先用eclipse生成相關的模闆。
  2. 編輯layout——界面搭好,對每一個View屬性寫好。
  3. 然後在activity的java檔案中寫邏輯
  4. 最後增加存儲功能。

1. 先用eclipse生成相關的模闆。

這個就不用講了。

2. 編輯layout——界面搭好,對每一個View屬性寫好。

在生成這個界面的時候,我們最好先使用拖拽功能,每一個XML檔案均可以有Graphic界面,在這個界面下,我們可以what you see is what you get。在圖形界面下,你可以看用每一個控件的屬性,研究每一個屬性。這樣來說上手速度會比較快一些。當然,這是前期你需要打基礎的時候使用的,後期我感覺直接用代碼編輯會比較好一些(圖形界面太卡)。

如果你有相關拖拽控件程式設計的經曆的話(delphi),應該會非常容易上手,很多屬性都是一樣的。

回到本文,提一下需要關注的點:

- 關于@+id/balabala,這個需要注意他們是怎麼命名的,btnAddItem edNewItem lvItems,這些是小駝峰命名法,這種命名方法主要應用于JAVA代碼中的變量名和函數名。當我們在java檔案中寫邏輯的時候,我們盡量使用這種方法xml裡面名字與java變量名或者函數名稱相同的方法來命名。(eg:xml檔案中 id 為 “lvItems”的,java檔案中是這麼定義并,引用的,首先定義Listview lvItems;然後 lvItems = (ListView) findViewById(R.id.lvItems); )

- 我覺得如果控件比較多的話,先拿紙筆畫個草圖并為之命名好各個部件這樣的話不會混亂。

3. 然後在activity的java檔案中寫邏輯

這個就是本文的重點部分羅,

你在前面已經完成了相關的圖形操作,android工具在R.java部分已經為之處理好了java與Res/檔案夾之間聯系。

現在進行的操作如下

- 在listView上面顯示出來

- ADD按鈕可以添加任務

按照先難後易的道理,

1. 第一個listview的處理。

- Arraylist 等等集合類需要有一定了解,不懂的話看這裡随便百度看一下。

- 關于listview 和 Adapter也需要有一定的了解(非要簡單概括一下的話Adapter就是翻譯官,負責溝通資料和界面呈現的翻譯官。)http://www.cnblogs.com/noTice520/archive/2011/12/05/2276379.html 

- 增加任務,不增加任務怎麼叫做todolist?這個比較簡單。

- 如果需要代碼的話到這裡下載下傳 http://blog.csdn.net/ctt594088/article/details/38174067

public class TodoActivity extends Activity {  
    ArrayList<String> items;  
    ArrayAdapter<String> itemsAdapter;  
    ListView lvItems;  
    //在這裡建立友善下面的資料引用
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_todo);  
        //引用界面上的listview
        lvItems = (ListView) findViewById(R.id.lvItems);  

        items = new ArrayList<String>();  

        itemsAdapter = new ArrayAdapter<String>(this,  
                android.R.layout.simple_list_item_1, items);  
        //第一個array擴充卡

        lvItems.setAdapter(itemsAdapter);  
        //對圖形界面上面的listview(lvItems)搭載擴充卡(itemsAdapter);
        items.add("1st")  
        //添加第一組資料,僅僅用于測試,過會就會删除。
    }  
      

注意:第一個表示執行個體化的actvity(java基本知識),第二個表示 系統資源ID(是android.R.balabala),第三個表示傳入的資料(其實是資料的引用)。

根據引用ArrayAdapter會調用toString(),将items包裝,并以simple_list_item_1樣子顯示出來。

Next,我們添加一個Button的事件,xml檔案中,為button添加onClick屬性,命名屬性值為 android:onClick=”addTodoItem”

然後在todoactivity.java中添加函數。如下:

圖檔2(注意畫箭頭部分)

Android快速入門的第二個App(講解版) Android快速入門的第二個App(講解版)
public void addTodoItem(View v) {
        EditText etNewItem = (EditText) findViewById(R.id.edNewItem);
        //找到界面控件
        itemsAdapter.add(etNewItem.getText().toString());
        //也可以寫成  items.add(etNewItem.getText().toString());
        etNewItem.setText("");
        //清空edittext
    }
      

可以添加,但是任務做完了總要删除吧?

好,我們現在實作删除功能——listview中長按删除功能。

protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_todo);

        lvItems = (ListView) findViewById(R.id.lvItems);
        items = new ArrayList<String>();
        readItem();
        itemsAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, items);
        lvItems.setAdapter(itemsAdapter);

        setupListviewListener();
        //添加函數
    }

    private void setupListviewListener() {
        lvItems.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                items.remove(arg2);
                //移除
                itemsAdapter.notifyDataSetChanged();
                //這一句不能不寫
                return true;
            }
        });
    }
      

注意,我剛剛說,itemsAdapter.notifyDataSetChanged();不能不寫,為什麼呢?這可能涉及到異步處理(涉及到數組的處理,我也暫時不太了解,不寫報錯),先記住。等我查完資料以後再補充。

4. 最後增加存儲功能。

http://download.csdn.net/detail/ctt594088/7683963,存儲功能需要用到apache的一個第三方包。

直接把相關包拖入一個lib中,

接着編寫下面代碼。

private void readItem() {
        // TODO Auto-generated method stub
        File filesDir = getFilesDir();
        File todoFile = new File(filesDir, "todo.txt");
        try {
            items = new ArrayList<String>(FileUtils.readLines(todoFile));

        } catch (IOException e) {
            // TODO: handle exception
            items = new ArrayList<String>();
            e.printStackTrace();

        }

    }

    private void saveitems() {
        File filesDir = getFilesDir();
        File todoFile = new File(filesDir, "todo.txt");
        try {
            FileUtils.writeLines(todoFile, items);

        } catch (IOException e) {
            // TODO: handle exception
            e.printStackTrace();
        }
      

因為使用了第三方包,是以寫起來非常順暢。

使用了trycatch異常機制。

分别在onCreate()開始初始化界面時候調用readItem,然後在Add資料和消除資料的時候調用saveitems。

總結

好了,第一個程式就完成了。發現,寫一步一步的教程還是太費時間了。

源碼下載下傳位址:

http://download.csdn.net/detail/ctt594088/7684281