当下拉列表中出现列表时,Android微调器不显示所选文本

时间:2017-01-25 06:25:28

标签: android android-layout android-spinner

我是android的新手,我试图在一个活动中使用两个微调视图。条目显示在微调器的下拉列表中,但是当我选择一个条目时,它不会出现在微调器控件中。我已经搜遍过,但它对我不起作用。以下就是我正在做/尝试。 我的活动xml是

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_seventy_thirty"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.elecsysindia.montestapp.SeventyThirtyActivity">

    <TextView
        android:text="Division"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txtDivison"
        android:textSize="20sp"
        android:layout_alignParentTop="true"
        android:layout_marginTop="16dp"
        android:layout_marginRight="16dp"
        />

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/spinnerDivision"
        android:layout_marginLeft="32dp"
        android:layout_alignTop="@+id/txtDivison"
        android:layout_toRightOf="@+id/txtDivison"
        android:layout_toEndOf="@+id/txtDivison" />
    <TextView
        android:text="Station"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtDivison"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="16dp"
        android:layout_marginRight="16dp"
        android:id="@+id/txtStationCode"
        android:textSize="20sp" 
        />
    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/spinnerStation"
        android:layout_below="@+id/spinnerDivision"
        android:layout_alignLeft="@+id/spinnerDivision"
        android:layout_alignStart="@+id/spinnerDivision"
        android:layout_marginTop="16dp"
        android:layout_marginStart="48dp"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="48dp" />
    <Button
        android:text="Submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnSubmit"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        android:layout_alignLeft="@+id/spinnerStation"
        android:layout_below="@+id/spinnerStation"
        />

</RelativeLayout>

并在课堂上:

private static List<String> listDivisions = new ArrayList<String>();
private List<String>  listStation = new ArrayList<>();
Spinner spinnerDivision ;
Spinner spinnerStation;
Button btnSubmit;
ArrayAdapter<String> adapterDivision;
ArrayAdapter<String> adapterStation;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_seventy_thirty);
    spinnerDivision = (Spinner) findViewById(R.id.spinnerDivision);
    spinnerStation = (Spinner) findViewById(R.id.spinnerStation);
    btnSubmit = (Button) findViewById(R.id.btnSubmit);
   // adapterDivision = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,listDivisions);
    adapterDivision = new ArrayAdapter<String>(getApplicationContext(),R.layout.layout_spinner_item,listDivisions);

    adapterDivision.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerDivision.setAdapter(adapterDivision);
    adapterDivision.notifyDataSetChanged();

    adapterStation = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item,listStation);
    adapterStation.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerStation.setAdapter(adapterStation);
    adapterStation.notifyDataSetChanged();

这就是列表的更新方式:

for (int i = 0; i < subs.length(); i++){
                    JSONObject subsDetail = subs.getJSONObject(i);
                    ArrayList<String> stnList = new ArrayList<String>();
                    if(subsDetail != null){
                        stnList.clear();
                        String DivCode = subsDetail.getString("divCode");
                        JSONArray st = subsDetail.getJSONArray("stncode");
                        String city="";
                        for (int j=0 ; j<st.length(); j++){
                            stnList.add(st.getString(j));
                            city = city.concat(st.getString(j)+"-");
                        }
                        mapSubscriptions.put(DivCode,stnList);
                        listDivisions.add(DivCode);
                        listStation.addAll(stnList);

我从简单的php脚本获取数据,这些数据将被插入到列表中。

在Sof中搜索相关问题之后,我也尝试使用

中使用的微调器的单独布局
adapterDivision = new ArrayAdapter<String>(getApplicationContext(),R.layout.layout_spinner_item,listDivisions);

但仍无用。 layout_spinner_item的xml文件如下:

  <?xml version="1.0" encoding="utf-8"?>

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinnerItem"
    android:textSize="20sp"
    android:gravity="left"
    android:textColor="#aaddaa"
    android:padding="5dip"
    />

我甚至尝试通过设置属性android:textColor来改变主题本身的文本颜色。但又没有成功。

<item name="android:textColor">#FF00FF</item>

你可以帮我解释为什么文本没有出现在微调控件中。

经过大量的努力,一个微调器中的文本出现了,但只有当我直接重启活动时,才会出现,我的意思是没有导航到主要活动的活动。 第二个微调器(spinnerStation)根本不显示文本。甚至两个微调器的源代码相同。请看屏幕截图。 text appear in spinnerDivision

Entries of spinnerStation which dont show text

1 个答案:

答案 0 :(得分:0)

您必须以编程方式选择位置。 喜欢这个

spinnerObject.setSelection(INDEX); 

而且,你应该改变这个

 adapterDivision = new ArrayAdapter<String>(getApplicationContext(),R.layout.layout_spinner_item,listDivisions);

到此,

adapterDivision = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_dropdown_item,listDivisions);

问题是,你的适配器没有从自定义布局文件中获取TextView