-1

ベクターを使用してテキストファイルからテキストビューを追加しようとしていますが、問題が発生しています。Tokenizerで情報を取得する配列を設定するとき、「mName」の値を出力すると、テキストファイルからすべての値が取得されます。しかし、「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;
}

}

4

1 に答える 1

1

メソッドが呼び出されるたびに、 のすべての値を反復処理するループでテキストを設定するVectorための最後の項目のみが表示されるのは正常です(そして に設定した最後のテキストは の最後の値です)。したがって、代わりに:getViewformVectorTextViewVector

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ます。

于 2013-01-20T08:05:04.220 に答える