【问题标题】:Link two Spinner with a button用一个按钮链接两个 Spinner
【发布时间】:2016-12-27 23:42:07
【问题描述】:

我希望用户这样做:当他们从第一个微调器中选择一个项目和另一个微调器上的项目并单击按钮时,他们会在TextView 中获得结果。我怎样才能做到这一点?

我已经创建了两个微调器,TextView 和一个按钮。例如:如果用户从第一个微调器中选择他们的姓名,第二个微调器选择他们的 ID,当他们点击按钮时,文本视图将显示他们的电话号码。

更新:

这是 MainActivity 的代码

package second.program.p1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.AdapterView;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {

Spinner v1;
Spinner v2;
ArrayAdapter<CharSequence> adapter;
TextView T1;
Button b;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    v1 = (Spinner) findViewById(R.id.v1);
    adapter = ArrayAdapter.createFromResource(this,R.array.city_names,android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    v1.setAdapter(adapter);
    v1.getSelectedItemPosition();



    v2 = (Spinner) findViewById(R.id.v2);
    adapter = ArrayAdapter.createFromResource(this,R.array.city_names,android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    v2.setAdapter(adapter);



    T1 = (TextView) findViewById((R.id.T1));

    b = (Button) findViewById(R.id.b);





}
    };

字符串.xml

<resources>
<string name="app_name">P1</string>
<string-array name="city_names">
    <item>" "</item>
    <item>"Med"</item>
    <item>"Ryu"</item>
    <item>"Jedd"</item>
    <item>"Hai"</item>
</string-array>
</resources>

所以,我想在用户从第一个微调器 (v1) 中选择“Med”并从第二个微调器 (v2) 中选择“Hai”之后,他按下按钮,然后在 TextView 中将显示公里(两个引用之间的距离,但我还没有添加它)

我做了两个旋转器, 现在我应该如何处理TextViewButton

【问题讨论】:

  • 这个问题好像是安卓的,为什么要链接这两个微调器?您可以从这两个微调器中获取个人,然后单击按钮,您可以查询您的数据库或您用于存储数据的任何存储库,以获取具有选定名称和 ID 的人数
  • 我希望结果显示为用户选择,因此我将添加两个微调器。因此用户可以从每个微调器中选择一个并从按钮获取结果
  • 是的,我理解你的问题,部分如果不是完全,你可以从 spinner/s 中选择然后查询客户的号码,这些 spinners 不需要相互链接,很简单就像您在选择联赛和日期的任何足球网站上看到,然后单击“开始”,它会显示该日期球队的所有比赛,它需要这两个微调器的输入并查询 db 以获取输出。我希望你现在很清楚,如果你问如何开始做这件事,那么那里有很多教程
  • 谢谢Muhammad,这就是我要找的,能给我找教程的钥匙吗。

标签: button spinner


【解决方案1】:

因为你已经更新了问题,所以我现在可以正确回答了,

我们需要重写 Android 提供的两种方法来处理微调器的项目选择。

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    // On selecting a spinner item
    String cityName = parent.getItemAtPosition(position).toString();

    // Showing selected spinner item
    Toast.makeText(MainActivity, "Selected city: " + cityName, Toast.LENGTH_LONG).show();

}

public void onNothingSelected(AdapterView<?> view) {
    // This method helps when we have to handle when user hasn't selected anything
       from spinner on which further events are dependent.

}

现在在你的 onCreate 中点击你的按钮 b 像这样:

b.setOnClickListener(new OnClickListener() { 

    @Override
    public void onClick(View view){

        String firstCityName = v1.getSelectedItem().toString();
        String secondCityName = v2.getSelectedItem().toString();

        //now you have both items/cities you selected from spinners
        // so its time to do some checks and show user the distance

        if(firstCityName.equals("Meh") && secondCityName.equals("Med"){
            T1.setText("the value which you have stored somewhere");

        } else if(firstCityName.equals("Med") && secondCityName.equals("Ryu"){
              T1.setText("30KM / hardcode it or get the value you stored somewhere");
       } //.... if-else-if for remaining cases
    }

}

一些建议:

1-请使用正确的命名约定。

Spinner spinnerStartingCity = new .....
Button btnSubmit = new ....

2- 像这样的主题在互联网上并不难找到,首先正确搜索,因为几乎所有编码人员都这样做??谷歌->复制/粘贴!! :D

3- 在谷歌搜索之前,如果你想成为一名开发人员而不仅仅是程序员,首先要通过适当的教程、android 开发网站和在线教程来彻底理解,因为学习比复制粘贴持续时间更长: )

快乐发展

【讨论】:

  • 非常感谢!!现在很清楚了,我是初学者,所以也许这太容易了:) 我会接受你的建议,但相信我,在我写到这里之前,我做了很多谷歌搜索以获得答案。祝你一切顺利!
  • 很高兴为您提供帮助 :) 您可以接受答案 :) 祝您好运 :) 没问题,您是初学者,这就是我写建议/s 的原因:D
猜你喜欢
  • 2015-10-10
  • 2010-09-29
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多