みなさん、こんにちは。3つのスピナーがあります。最初のスピナー値に基づいて2番目のスピナー値を変更し、2番目のスピナー値に基づいて3番目のスピナー値を変更したいので、すべての値がデータベースからフェッチされて表示されます。ArrayAdapterを使用しています。過去2週間。しかし、私は私が時間plsを使い果たしている私を親切に助けてくれる解決策を得ることができません。
質問する
2198 次
2 に答える
4
次のようにアダプタを設定する必要があります。
package com.example.mapsdemo;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class MainActivity extends Activity {
private Spinner spin1;
private Spinner spin2;
ArrayList<String> a = new ArrayList<String>();
ArrayList<String> b = new ArrayList<String>();
ArrayList<String> c = new ArrayList<String>();
// private ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spin1 = (Spinner) findViewById(R.id.spinner1);
spin2 = (Spinner) findViewById(R.id.spinner2);
fillarray();
spin1.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_dropdown_item_1line, a));
/*
* spin2.setAdapter(new ArrayAdapter<String>(MainActivity.this,
* android.R.layout.simple_dropdown_item_1line, b));
*/
spin1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int pos,
long arg3) {
// TODO Auto-generated method stub
if (pos == 0) {
spin2.setAdapter(new ArrayAdapter<String>(
MainActivity.this,
android.R.layout.simple_dropdown_item_1line, b));
} else {
spin2.setAdapter(new ArrayAdapter<String>(
MainActivity.this,
android.R.layout.simple_dropdown_item_1line, c));
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
private void fillarray() {
// TODO Auto-generated method stub
a.clear();
a.add("a");
a.add("b");
a.add("c");
a.add("d");
a.add("e");
b.clear();
b.add("1");
b.add("2");
b.add("3");
b.add("4");
c.clear();
c.add("Android");
c.add("ios");
}
}
次のようなレイアウトファイル:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="40dp" />
<Spinner
android:id="@+id/spinner2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/spinner1"
android:layout_marginTop="80dp" />
</RelativeLayout>
于 2013-03-26T06:13:21.367 に答える
4
これが役立つかもしれません、
ArrayAdapter<String> secondspinnerAdapter;
ArrayAdapter<String> firstspinnerAdapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_spinner_item,
firstspinnervalue);
first_spinner.setAdapter(firstspinnerAdapter);
firstspinnerAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
firstspinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
// get data from database add to arraylist
secondspinnerAdapter = new
ArrayAdapter<String>( mainActivity.this,
android.R.layout.simple_spinner_item, arraylistvalue);
second_spinner.setAdapter(secondspinnerAdapter);
second_spinner.setSelection(arg2, false);
secondspinnerAdapter.setDropDownViewResource
(android.R.layout.simple_spinner_dropdown_item);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
最初のスピナー項目が選択され、次にデータベースからデータを取得し、arraylistに入力して、secondspinnerを設定します。
同様に、選択した2番目のスピナーアイテムに従います。
于 2013-03-26T06:29:42.173 に答える