использование двух андроидных прядильщиков, один из которых зависит от другого

Я просмотрел так много кода и пытался понять, что я делаю неправильно, но я провалился и теряю время. Это было бы довольно просто, но я не могу понять..

Я разрабатываю приложение для Android, и мне нужно поставить 2 счетчика на одно действие. второй счетчик будет заполняться на основе записи, выбранной на первом счетчике. Звучит просто, верно?

Итак, вот что я хочу сделать. Если пользователь выбирает «Мобильный», должно отображаться содержимое из choosePersonalPlan, когда пользователи выбирают «Крупный бизнес», должен запускаться chooseLargeBusplan, а последняя запись должна вызывать chooseSmallMedPlan. Все, что я получаю, это постоянно отображаемые элементы из ChooseSmallMedPlan.

вот мой код. пожалуйста, дайте мне знать, что я делаю неправильно!

Java-файл

package com.example.mobilebillforecaster;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;


 public class Du_postpaid extends Activity {

    public Spinner catspinner,planspinner3,planspinner1,planspinner2;


    protected void onCreate(Bundle mbfSplash) {
            super.onCreate(mbfSplash);
            setContentView(R.layout.postpaid);

    chooseCategory();
    choosePersonalPlan();
    chooseLargeBusPlan();
    chooseSmallMedPlan();
    }

    public void chooseCategory() {

        catspinner = (Spinner) findViewById(R.id.catspinner);
        ArrayAdapter<CharSequence> catAdapter = ArrayAdapter.createFromResource(this, R.array.ducategory, android.R.layout.simple_spinner_item);
        catAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        catspinner.setAdapter(catAdapter);

    }
    private void choosePersonalPlan(){
        planspinner1 = (Spinner) findViewById(R.id.planspinner);
        List<String> planlist = new ArrayList<String>();
        planlist.add("Elite Regular Plan");
        planlist.add("Elite Super Plans");
        planlist.add("Emirati Plan");
        planlist.add("Pay As You Go");
        planlist.add("Visitor Mobile Line");
        ArrayAdapter<String> planAdapter1 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, planlist);
        planAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        planspinner1.setAdapter(planAdapter1);

    }

    private void chooseLargeBusPlan(){

        planspinner2 = (Spinner) findViewById(R.id.planspinner);
        List<String> planlist1 = new ArrayList<String>();
        planlist1.add("Premier Plan");
        planlist1.add("The Executive Plan");
        planlist1.add("Business Circle Plan");
        planlist1.add("Business Diamond Plan");
        ArrayAdapter<String> planAdapter2 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, planlist1);
        planAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        planspinner2.setAdapter(planAdapter2);


    }
    private void chooseSmallMedPlan(){

        planspinner2 = (Spinner) findViewById(R.id.planspinner);
        List<String> planlist2 = new ArrayList<String>();
        planlist2.add("Business Super Plan");
        planlist2.add("Her Business Super Plan");
        planlist2.add("Business Circle Plan");
        planlist2.add("Pay As you Go® Plus");
        ArrayAdapter<String> planAdapter3 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, planlist2);
    planAdapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    planspinner2.setAdapter(planAdapter3);

    }


    public class planOnClickListener implements OnItemSelectedListener {

            @Override
            public void onItemSelected(AdapterView<?> parent, View v, int pos,
                    long id) {

                parent.getItemAtPosition(pos);  

                if (pos==0){
                choosePersonalPlan();   
                }else if (pos==1){
                chooseLargeBusPlan();
                } else if (pos==2){
                chooseSmallMedPlan();
}
            }
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
            }


 }

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="left" >

    <TextView
        android:id="@+id/postp"
        android:layout_width="130dp"
        android:layout_height="50dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:text="@string/postp"
        android:textSize="30dp"

        />


    <Spinner
        android:id="@+id/catspinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/postp"
        android:layout_marginTop="25dp"
        android:entries="@array/ducategory"
        android:prompt="@string/category_prompt"
        />

     <Spinner
        android:id="@+id/planspinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/catspinner" />


</RelativeLayout>

person Rabeeu Roohie    schedule 06.12.2012    source источник


Ответы (3)


Добавлять

catspinner.setOnItemSelectedListener(new planOnClickListener());

to

chooseCategory();

Вот весь код-

public class TemoActivity extends Activity {

public Spinner catspinner,planspinner3,planspinner1,planspinner2;


protected void onCreate(Bundle mbfSplash) {
        super.onCreate(mbfSplash);
        setContentView(R.layout.main);

chooseCategory();
choosePersonalPlan();
chooseLargeBusPlan();
chooseSmallMedPlan();
}

public void chooseCategory() {

    catspinner = (Spinner) findViewById(R.id.catspinner);
    ArrayAdapter<CharSequence> catAdapter = ArrayAdapter.createFromResource(this, R.array.ducategory, android.R.layout.simple_spinner_item);
    catAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    catspinner.setAdapter(catAdapter);
    catspinner.setOnItemSelectedListener(new planOnClickListener());
}
private void choosePersonalPlan(){
    planspinner1 = (Spinner) findViewById(R.id.planspinner);
    List<String> planlist = new ArrayList<String>();
    planlist.add("Elite Regular Plan");
    planlist.add("Elite Super Plans");
    planlist.add("Emirati Plan");
    planlist.add("Pay As You Go");
    planlist.add("Visitor Mobile Line");
    ArrayAdapter<String> planAdapter1 = new ArrayAdapter<String>(this,
        android.R.layout.simple_spinner_item, planlist);
    planAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    planspinner1.setAdapter(planAdapter1);

}

private void chooseLargeBusPlan(){

    planspinner2 = (Spinner) findViewById(R.id.planspinner);
    List<String> planlist1 = new ArrayList<String>();
    planlist1.add("Premier Plan");
    planlist1.add("The Executive Plan");
    planlist1.add("Business Circle Plan");
    planlist1.add("Business Diamond Plan");
    ArrayAdapter<String> planAdapter2 = new ArrayAdapter<String>(this,
        android.R.layout.simple_spinner_item, planlist1);
    planAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    planspinner2.setAdapter(planAdapter2);


}
private void chooseSmallMedPlan(){

    planspinner2 = (Spinner) findViewById(R.id.planspinner);
    List<String> planlist2 = new ArrayList<String>();
    planlist2.add("Business Super Plan");
    planlist2.add("Her Business Super Plan");
    planlist2.add("Business Circle Plan");
    planlist2.add("Pay As you Go® Plus");
    ArrayAdapter<String> planAdapter3 = new ArrayAdapter<String>(this,
        android.R.layout.simple_spinner_item, planlist2);
planAdapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
planspinner2.setAdapter(planAdapter3);

}


public class planOnClickListener implements OnItemSelectedListener {

         @Override
        public void onItemSelected(AdapterView<?> parent, View v, int pos,
                long id) {

            parent.getItemAtPosition(pos);  

            if (pos==0){
            choosePersonalPlan();   
            }else if (pos==1){
            chooseLargeBusPlan();
            } else if (pos==2){
            chooseSmallMedPlan();
 }
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
        }
}
person asloob    schedule 06.12.2012
comment
привет .. спасибо за ответы .. изменил код, как было предложено. но теперь второй спиннер вообще не заполняется! опущены методы из метода oncreate и добавлен прослушиватель плана onclick для выбора категории. - person Rabeeu Roohie; 07.12.2012
comment
Не пропускайте методы из onCreate. Держите их такими, какие они есть. - person asloob; 07.12.2012
comment
Привет.. Я добавил методы, как они были.. Я вернулся к своей первой проблеме. Я думаю, что делаю что-то неправильно в прослушивателе planonclick, возможно, не передавая правильные переменные для переключения. пожалуйста посоветуй. @али-имран - person Rabeeu Roohie; 07.12.2012

Опустить ChoosePersonalPlan(); выбратьБольшойПлан Автобуса(); выбратьМалыйМедПлан();

из метода onCreate()

person passionate    schedule 06.12.2012

В вашем коде вы нигде не устанавливаете planOnClickListener(). Я думаю, вы забыли настроить слушателя вот так catspinner.setOnItemSelectedListener(new planOnClickListener());

person Ali Imran    schedule 06.12.2012