如何在textview中设置国家/地区代码以在微调器中选择国家/地区名称?

时间:2017-10-16 14:50:04

标签: android

这是主要的XML:

<Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="40sp"
        android:layout_marginTop="37dp"
        android:layout_below="@+id/textView2"
        android:layout_toLeftOf="@+id/button"
        android:layout_toStartOf="@+id/button"
        android:layout_marginRight="29dp"
        android:layout_marginEnd="29dp" />

    <TextView
        android:id="@+id/countrycode"
        android:layout_width="wrap_content"
        android:text="+"
        android:textSize="30sp"
        android:layout_height="40sp"
        android:ems="10"
        android:layout_alignTop="@+id/spinner"
        android:layout_toLeftOf="@+id/editText2"
        android:layout_toStartOf="@+id/editText2" />

这是我的Java代码:

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

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

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    TextView textview;

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

        TextView textview = (TextView) findViewById(R.id.countrycode);

        // Spinner element
        Spinner spinner = (Spinner) findViewById(R.id.spinner);

        // Spinner click listener
        spinner.setOnItemSelectedListener(this);

        // Spinner Drop down elements
        String[] countryname = {"India", "America", "Japan", "Austrailia", "Canada" };

        // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countryname);

        // Drop down layout style - list view with radio button
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // attaching data adapter to spinner
        spinner.setAdapter(dataAdapter);
    }

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


//        // Showing selected spinner item
       Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
    }
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
}

这是我的代码。如何在TextView中设置国家/地区代码以在Spinner中选择国家/地区名称?我想使用这段代码,因为它对我来说很容易理解并且它正在工作,但我不能做我想做的事。

我希望如果我在Spinner中选择India,那么我得到印度ISD代码(+91)是TextView。

3 个答案:

答案 0 :(得分:0)

为TextView设置TextWatcher:

textview.addTextChangeListener(new TextWatcher());并实施onTextChange()方法从用户处获取输入的国家/地区代码,然后输入swich / case以确定我应该选择哪个国家/地区名称。

答案 1 :(得分:0)

使用Hashtable。

class MainActivity {

....
    Hashtable countryCodes<String, String>;
    TextView textViewCountryCode;
....

    onCreate(....){
        ....
        textViewCountryCode = (TextView) findViewById(R.id.countrycode);
        countryCodes = new Hashtable<>();
        countryCodes.put("India", "+91");
        ....

    }
....
    onItemSelected(....){
        ....
        String countryCode = countryCodes.get(item);
        textViewCountryCode.setText(countryCode);
        ....
    }
}

答案 2 :(得分:-1)

我理解的是您希望在您提供的代码中得到答案。所以你可以做的是再多一个国家代码数组和On Spinner onSelected方法将所选位置设置为文本视图,但要确保国家名称和国家代码索引相同。或者我建议使用HashMap进行相同。

//在oncreate之前添加以下内容  TextView textview;         String [] countrycode = {&#34; + 91&#34;,&#34; + 1&#34;,&#34; + 81&#34;,&#34; + 61&#34;,&#34; + 1&#34; };

并在onItemSelected()方法中执行此操作

textview.setText(COUNTRYCODE [位置]);