天天看点

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