0

スピナーが2つあります。データベースからスピナーデータを読み込んでいます。最初のスピナーでアイテムを選択すると、そのアイテムに応じて、2番目のスピナーが対応するデータを読み込む必要があります。たとえば、最初のスピナーで野菜を選択した場合、2番目に野菜の名前のみが表示されます。 1番目に果物を選択すると、2番目に果物の名前が表示されます.1番目のスピナーで選択したアイテムをカスタマイズされたスピナークラスに渡すにはどうすればよいですか?私はそのアイテムを渡そうとしましたが、2番目のスピナーのすべての行で空白になりました。これが私のコードです

   // Spinner click listener
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> paramAdapterView,
                        View paramView, int paramInt, long paramLong) {
                    // TODO Auto-generated method stub
                    label = paramAdapterView.getItemAtPosition(paramInt)
                            .toString();
                    deviceID = paramInt;
                    loadSpinnerData1(label);

                }
       private void loadSpinnerData1(String type) {
        // database handler
        DatabaseHandler db = new DatabaseHandler(getApplicationContext());
                 //getting the spinner item depending on what item selected in 1st spinner
                List<String> manuft = db.getAllManuft(type);
        spinner1.setAdapter(new MyAdapter1(OptionsActivity.this, R.layout.row, manuft,type));
    }

私のカスタムスピナークラス

        public class MyAdapter1 extends ArrayAdapter<String>{

        public MyAdapter1(Context context, int textViewResourceId, List<String> manuft, String type) {
            super(context, textViewResourceId, manuft);
        }

        @Override
        public View getDropDownView(int position, View convertView,ViewGroup parent) {
            return getCustomView(position, convertView, parent, label);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            return getCustomView(position, convertView, parent, label);
        }

        public View getCustomView(int position, View convertView, ViewGroup parent, String type) {

            DatabaseHandler db = new DatabaseHandler(getApplicationContext());

            List<String> manuft = db.getAllManuft(type);

            LayoutInflater inflater=getLayoutInflater();
            View row=inflater.inflate(R.layout.row, parent, false);
            TextView label=(TextView)row.findViewById(R.id.device);

            for(int i=0;i<manuft.size();i++){
                label.setText(manuft.get(position));
            }


            return row;
            }
        }
4

2 に答える 2

0

//グローバルに選択されたアイテムを宣言します

  String type;

次に、this.type=typename;を作成します。ロードスピナーで

于 2012-10-19T07:04:32.107 に答える
0

次のようなものを試してください。

  spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, android.view.View v, int position, long id) {
                    // this method will update your second spinner
            updateSecondSpinner(id);


        }

2番目のスピナーを更新する方法は次のとおりです。

    private void updateSecondSpinner(long id) {

                String[] args = new String[] { String.valueOf(id) };
                cur2 = db.rawQuery("select IID AS _id, TXNAME from TABLE WHERE IID= ?", args);

                SimpleCursorAdapter adapter_2 = new SimpleCursorAdapter(AccidentNewActivity.this, android.R.layout.simple_spinner_item, cur2,
                    new String[] { "TXNAME" }, new int[] { android.R.id.text1 });

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

                spinner_modelo.setAdapter(adapter2);

...
}
于 2012-10-19T07:25:02.947 に答える