一个简单的todo列表应用

codePath i LOVE YOU

知识点
1. As导入相应包的声明http://blog.csdn.net/hyr83960944/article/details/38438355
2. 在可是化界面操作元素,双击视图添加id,没找到怎么给EditText加hint
3. ListView相关知识点:
- 需要数据源ArrayList,适配器ArrayAdapter和ListView视图
- 为button添加onClick属性并赋值方法名称:注意:此时方法一定要声明为public,参一定有一个View的参数。
- setOnItemLongClickListener()方法
- 为列表加入增删逻辑并且保存
- io库commons-io:commons-io:2.4
代码如下:

public class MainActivity extends AppCompatActivity {
    private ArrayList<String> items;
    private ArrayAdapter<String> itemAdapter;
    private ListView lvItems;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//加载列表视图
        readItems();//记载列表
        lvItems = (ListView) findViewById(R.id.lvItems);
        //创建列表对象
        //items = new ArrayList<>();
        //创建适配器
        itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
        lvItems.setAdapter(itemAdapter);
        //items.add("first Item");
        //items.add("second Item");

        //建立列表监听器
        setUpListViewListener();
    }

    public void setUpListViewListener() {
        //建立一个回调函数,长按将会删除一项并且刷新列表
        lvItems.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                items.remove(position);
                itemAdapter.notifyDataSetChanged();
                writeItems();//保存列表
                return true;
            }
        });
    }
    public void onAddItem(View V) {
        EditText etNewItem = (EditText) findViewById(R.id.etNewItem);//创建一个方法响应button的动作
        String itemText = etNewItem.getText().toString();//获得输入
        itemAdapter.add(itemText);//加入列表
        etNewItem.setText("");
        writeItems();//保存列表文件
    }
    //打开文件读取列表
    private void readItems() {
        File fileDir = getFilesDir();//获得文件的绝对目录
        File todoFile = new File(fileDir, "todo.text");//创建一个新的目录
        try {
            items = new ArrayList<String>(FileUtils.readLines(todoFile));//新的io库
        } catch (IOException e) {
            items = new ArrayList<>();
        }
    }
    //保存文件,写入列表
    private void writeItems() {
        File fileDir = getFilesDir();//获得文件的绝对目录
        File todoFile = new File(fileDir, "todo.text");//创建一个新的目录对象
        try {
            FileUtils.writeLines(todoFile, items);//列表视图内容写入文件
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值