0

このプロセスが機能しているときに、2 つのスピナーの名前を順番に保存/印刷/表示するボタンを作成したいと考えています。

このボタンは、ユーザーの名前が実行されているときに押されます。例えば:

  1. item == Linda のときに Linda がボタンを押しました。そして直接、ボタンはスピナー1にリンダの名前を表示/印刷します。

  2. 他のユーザーでも同じことが起こります。名前は次のスピナー (Spinner2) に直接保存されます。

これが私のコードです...

メインプログラム

このメイン プログラム システムは、名前のループに使用されます。

public boolean onOptionsItemSelected(MenuItem item) {
    Log.i(TAG, "Menu Item selected " + item);
    if (item == Linda) {
        variabel.setViewMode(ClassOne.Object1);
        new Thread(new Runnable(){
        public void run() {
        try {
        Thread.sleep(5000);
        onOptionsItemSelected(David);}
        catch (Exception ex){}}
        }).start();

    } else if (item == David) {
            variabel.setViewMode(ClassOne.Object2);
            new Thread(new Runnable(){
            public void run() {
            try {
            Thread.sleep(5000);
            onOptionsItemSelected(Samuel);}
            catch (Exception ex){}}
            }).start();

    } else if (item == Samuel) {
            variabel.setViewMode(ClassOne.Object3);
          new Thread(new Runnable(){
          public void run() {
          try {
          Thread.sleep(5000);
          onOptionsItemSelected(Linda);}
          catch (Exception ex){}}
          }).start();
      }

スピナープログラム

これが私のコードです...

private Spinner spinner1, spinner2;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    addListenerOnButton();
    addListenerOnSpinnerItemSelection();

}

public void addListenerOnSpinnerItemSelection() {

    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener());
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    spinner2.setOnItemSelectedListener(new CustomOnItemSelectedListener());

// get the selected dropdown list value
public void addListenerOnButton() {

    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);

public void onClick(View v) {
/* get names when button stop on looping process and print the names in spinners*/
            String name1 = String.valueOf(spinner1.getSelectedItem());
            String name2 = String.valueOf(spinner2.getSelectedItem());
            String print_name = getName(name1);
            String print_name = getName(name2);

public String getName(String name) {
        String value = "0";
        if (name.equalsIgnoreCase("Linda")) {
            value = "0";
        } else if (name.equalsIgnoreCase("David")) {
            value = "1";
        } else if (name.equalsIgnoreCase("Samuel")) {
            value = "2"; }

STRING.XML

 <string-array name="names">
    <item>Linda</item>
    <item>David</item>
    <item>Samuel</item>

私の質問:

ボタンを作成する方法と、スピナーで選択した名前を直接印刷/表示できるボタンをどこに配置すればよいですか?

4

1 に答える 1

0

これがまさにあなたが望んでいるものかどうかはわかりませんが、少なくともあなたのコメントでそれを理解するのに役立つかもしれません.

main.xmlレイアウト:

<LinearLayout
    android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<Spinner android:id="@+id/spinner1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:entries="@array/names" />

<Spinner android:id="@+id/spinner2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:entries="@array/names" />

</LinearLayout>

<Button android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Choose" />

</LinearLayout>

主な活動

 public class MainActivity extends Activity implements OnClickListener
 {
private Button button;
private Spinner spinner1, spinner2;

private long startTime = 0;
private int elapsed = 0;
private final int TIMEOUT = 3;


@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    button = (Button) findViewById(R.id.button);
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);

    button.setOnClickListener(this);

    startTime = System.currentTimeMillis();
    handler.postDelayed(run, 0);

}

@Override
public void onClick(View v)
{
    handler.removeCallbacks(run);
    spinner2.setSelection(spinner1.getSelectedItemPosition());
}

final Handler handler = new Handler();
Runnable run = new Runnable()
{
    @Override
    public void run()
    {
        long millis = System.currentTimeMillis() - startTime;
        int seconds = (int) (millis / 1000);
        seconds = seconds % 60;

        elapsed = TIMEOUT - seconds;

        if (elapsed == 0)
        {
            incrementSpinner();
            startTime = System.currentTimeMillis();
            handler.postDelayed(this, 0);               
        }
        else
        {
            handler.postDelayed(this, 500);             
        }
    }
};  

private void incrementSpinner()
{
    int selPos = spinner1.getSelectedItemPosition();

    if(selPos == spinner1.getCount() - 1)
    {
        selPos = 0;
    }
    else
    {
        selPos++;
    }

    spinner1.setSelection(selPos);
}

}
于 2013-10-13T15:07:33.317 に答える