實際問題:
用戶輸入信息(比如:貨物名稱),已經用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就很容易就會了.
最後,不會的多了去了,虛心多百度.