2013-01-20 29 views
-1

我想從文本文件中使用矢量 添加文字瀏覽,但我遇到了一個問題。 當設置我的數組,使用Tokenizer的信息,我打印 「mName」的值,它從文本文件中獲取所有值。 但是當我assing的 「MNAME」 到TextView的,我只能從列表中最後一個名稱..矢量只獲得會員的最後一個值

這裏是代碼:

陣列和文本文件初始化 - :

AssetManager assets = mContext.getAssets(); 

    try { 
     br = new BufferedReader(new InputStreamReader(
       assets.open("country_list"))); 
     while ((sCurrentLine = br.readLine()) != null) { 
      StringTokenizer tokenizer = new StringTokenizer(sCurrentLine, 
        ","); 
      int count = 0; 

      String[] stringArr = new String[3]; 

      while (tokenizer.hasMoreTokens()) { 
       String tokenOrginizer = tokenizer.nextToken(); 
       stringArr[count] = tokenOrginizer; 
       count++; 
       mVector = new Vector<Country>(); 

      } 

      Country country = new Country(stringArr[0], 
        Integer.parseInt(stringArr[1]), 
        Integer.parseInt(stringArr[2])); 
      mVector.add(country); 
      System.out.println(stringArr[0]); 
      for (int i = 0; i < mVector.size(); i++) { 
       System.out.println("Vector : " + mVector.get(i).getmName()); 
       //here i see all the values when printing 
      } 

GetView方法 - :

public int getCount() { 
    // TODO Auto-generated method stub 
    return mVector.size(); 
} 

@Override 
public Object getItem(int item) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public long getItemId(int itemId) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    TextView tv; 
    if (convertView == null) { 
     tv = new TextView(mContext); 
    } else { 
     tv = (TextView) convertView; 
    } 

    for (int i = 0; i < mVector.size(); i++) { 
     tv.setText(mVector.get(i).getmName()); 
     // i have a feeling that this is where i do something wrong 

    } 

    return tv; 
} 

}

回答

1

這是正常的日你在Vector只能看到最後一項爲各getView方法被稱爲設置在for循環迭代文本在所有值在mVector時間(和你的TextView設置的最後文本是在最後一個值Vector)。因此,而不是:

for (int i = 0; i < mVector.size(); i++) { 
     tv.setText(mVector.get(i).getmName()); 
     // i have a feeling that this is where i do something wrong 
     // your feeling is right, why the loop?!? 
} 

你會想:

//... 
if (convertView == null) { 
    tv = new TextView(mContext); 
} else { 
    tv = (TextView) convertView; 
} 
tv.setText(mVector.get(position).getmName()); 
return tv; 

此外,使用ArrayList代替Vector