2016-09-21 7 views
0

私はSQLデータベースからスピナーを取り込むためにtriyngです: これまでのタブ[]で私は必要なものすべてをいくつか得ています要素。 私はヌル要素なしで配列を新しい配列に書き直そうとしています。 しかし、これまでのところ、タブ[]からの最初の値でスピンナを投入しました。 私はtab2 []のサイズが正しいことを意味しますが、すべての要素はtab [0]のコピーです。 どうしたの?tab []が異なるときにtab2 []の値が同じ理由

public void zrob(){ 
Spinner spinner= (Spinner) findViewById(R.id.spinner2); 
Spinner spinner1= (Spinner) findViewById(R.id.spinner); 
String string = spinner.getSelectedItem().toString(); 
String string1= new String(); 
String string2= new String(); 
DataBaseHelper dataBaseHelper= new DataBaseHelper(this); 
Cursor cursor= dataBaseHelper.getReadableDatabase().rawQuery("SELECT * FROM BusPlan",null); 
int count= cursor.getCount(); 
String tab []= new String[count]; 

cursor.moveToFirst(); 
for (int i =0;count>i;i++) { 
    string1 = cursor.getString(cursor.getColumnIndex("Linie_Nummer")); 
    if (string.equals(string1)) { 
     tab[i] = cursor.getString(cursor.getColumnIndex("Bushaltestelle")); 
     cursor.moveToNext(); 
    } else { 
     cursor.moveToNext(); 
    } 
} 
cursor.close(); 
dataBaseHelper.close(); 
int c=0; 
for (int j=0; count>j;j++){ 
    if (tab[j]!=null){c=c+1;} 
} 
String tab2 []= new String[c]; 
for (int k=0; count>k;k++){ 
    if (tab[k]!=null){ 
     for (int l=0;l<c;l++) 
      if (tab2[l]==null){ 
       tab2[l]=tab[k]; 
      } 
    } 
} 
TextView tv =(TextView) findViewById(R.id.textView); 
tv.setText(tab2[3]); 

List<String> stringList = new ArrayList<String>(Arrays.asList(tab2)); 
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(Bodo.this, android.R.layout.simple_spinner_item, tab2); //selected item will look like a spinner set from XML 
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner1.setAdapter(spinnerArrayAdapter); 

}

答えて

1

あなたの問題はここにある:

for (int k=0; count>k;k++){ 
    if (tab[k]!=null){ 
     for (int l=0;l<c;l++) 
      if (tab2[l]==null){ 
       tab2[l]=tab[k]; 
      } 
     } 
    } 
} 

内部ループは必要ありません。外側ループ(k==0)の最初の実行では、内側ループはl = 0で始まり、すべての値がnullであるため、tab2にtab [0]を埋め込みます。私は問題を発見しようとしていた

int counter = 0; 
for (int k=0; count>k;k++){ 
    if (tab[k]!=null) { 
     tab2[counter] = tab[k]; 
     counter++; 
    } 
} 
+0

3日:

ソリューションは、手動での値のいずれかを割り当てるたびにインクリメントされ、タブのための別のカウンターを作ることです。それはうまく働いています。 –

関連する問題