实际问题:
用户输入信息(比如:货物名称),已经用java流写入"name"的文件中,现在需要将其读取出来,存放在数组中,加载配适器到listview中.
private ListView lsv_1;
static ArrayList<String> list = new ArrayList<String>(); //一定要初始化否则在add时报错
//ArrayList <String>list;只是声明
@Override //了一个引用变量,实际上并未有
protected void onCreate(Bundle savedInstanceState) {//真正的内存空间,更不用说方法
super.onCreate(savedInstanceState);
setContentView(R.layout.xianshi);
try {
FileInputStream fis = openFileInput("test");
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
String line ="";
while( (line = reader.readLine()) != null){ //利用循环,将每行读取到ArrayList
list.add(line); //ArrayList的add方法,精髓.
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String[] array = new String[list.size()]; //初始化一个长度相同的固定数组
list.toArray( array); //ArrayList的toArray方法
ArrayAdapter<String> adapter = new ArrayAdapter<String>(Xianshi.this, android.R.layout.simple_list_item_1, array); //配置到数组配饰适器
lsv_1 = (ListView) findViewById(R.id.listView1);
lsv_1.setAdapter(adapter); //加载配适器到ListView
}
@Override
protected void onDestroy() { //活动销毁时候,归零ArrayList
// TODO Auto-generated method stub //否则二次加载list造成重复
super.onDestroy();
list.removeAll(list);
}
反思:
我在简单这块转化上,花费了很长时间.初学者对体系不了解,造成很多方法的错用,浪费了比较长时间.
优点:笨人笨方法,一个变量去调试&&简化问题测试给了我很多便利,至少有个思路.
缺点:变通性差,要勇于放弃,多试试几种办法,像之前用复制数组的办法,可能还要迷糊好久,用了ArrayList就很容易就会了.
最后,不会的多了去了,虚心多百度.