0

解決策は次のとおりですhttp://www.congdegnu.es/2011/06/02/spinners-en-android-tres-formas-de-poblarlos/sqlite データベースからスピナーを次のように入力しています。

Cursor CS = newDB.rawQuery("Select ID AS _id, Name from Schools",null);
    CS.moveToFirst();
    do{     
        Schools.add(CS.getString(CS.getColumnIndex("_id")));   
    } while(CS.moveToNext());

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_spinner_item,Schools);

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner1.setAdapter(dataAdapter);

私の問題は、IDのみを追加することですが、そのIDに値を追加するにはどうすればよいので、値が選択されたときにIDを取得できますか?

4

4 に答える 4

0

代わりに、スピナーにSimpleCursorAdapterを使用することを検討してください。これは API-11 以降非推奨になっていますが、 LoaderManager をCursorLoaderと共に使用することも検討してください

LoaderManager および CursorLoader に移行する方法についての説明は、ここにあります: How to transition from managedQuery to LoaderManager/CursorLoader?

SimpleCursorAdapter を使用して開始することをお勧めします。その後、十分に快適な場合は、他の方法に進みます。

于 2013-03-05T16:38:17.363 に答える
0

1) を作成するArrayList<School>

2) すべての学校を Arraylist に追加します

3) 次のようなカスタム アダプターを作成します。

public class SchoolAdapter extends ArrayAdapter<School>{

    public SchoolAdapter(Context ctx, List<School> schools){
        super(ctx, 0, schools);
    }


    @Override
    public View getView(final int position, final View convertView, final ViewGroup parent) {

        TextView tv;
        if (convertView == null){
            tv = new TextView(getContext());
        } else {
            tv = (TextView) convertView;
        }
        tv.setTextSize(16);
        final School school = getItem(position);
        tv.setText(school.toString());
        return tv;
    }

}

4)あなたの活動でこれを使用してください:

final SchoolAdapter adapter = new SchoolAdapter(this, schools);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

     public void onItemSelected(AdapterView<?> parent, View view, 
                int pos, long id) {
         School school = adapter.getItem(pos);
         // Do whatever you want with your school            

     }

     public void onNothingSelected(AdapterView<?> parent) {

     }

}); 
于 2013-03-05T16:55:06.833 に答える
0

「schools」は、自分のクラス「school」を含む配列だと思います。
情報を含むプロパティを追加できます。
または、2 次元配列を使用することもできます。
情報を取得するには、arrayadapter をセットアップする必要があります (getter メソッド)。
それが役に立てば幸い

于 2013-03-05T16:40:36.640 に答える
0

カーソルアダプターを試す

また

グローバル変数を取る

 Hashmap schoolmap=new Hashmap(); 

リストにデータを挿入しながら、このようにハッシュマップにも追加します

CS.moveToFirst();
    do{     
        Schools.add(CS.getString(CS.getColumnIndex("_id")));   
        schoolmap.put(CS.getString(CS.getColumnIndex("_id")),CS.getColumnIndex("_id"))
    } while(CS.moveToNext());

onSpinner アイテムをクリックすると、このような値が取得されます

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

         public void onItemSelected(AdapterView<?> parent, View view, 
                    int pos, long id) {
              String value=((TextView)view).getText();
              int id=Integer.parseInt(schoolmap.get(value));
            }

            public void onNothingSelected(AdapterView<?> parent) {

            }

    }); 
于 2013-03-05T16:43:06.447 に答える