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();
}
}
}