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

问题描述:

这是主要的XML:如何在textview中设置国家/地区代码以在微调器中选择国家/地区名称?

<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中选择国家/地区名称?我想使用这段代码,因为它对我来说很容易理解,而且它工作正常,但我不能做我想做的事。

我想如果我选择印度在微调那么我得到印度ISD代码(+91)是TextView。

+0

您希望您的微调控制器根据您在TextView中输入的国家/地区代码显示国家/地区名称? – nhoxbypass

+0

它正在工作,但我不能做我想要的东西?那么它不适合你。 据我可以理解你的问题,你想从微调选择国家,并选择国家,textView得到更新国家代码的权利? 那么它有什么问题呢?看起来坦率而且容易解决。 –

设置一个TextWatcher你的TextView:

textview.addTextChangeListener(new TextWatcher());和实施onTextChange()方法从用户键入的国家代码,然后把在SWICH /箱,以确定我应该选择哪个国家的名字。

使用散列表。

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); 
     .... 
    } 
} 

我的理解是你想在你提供的代码中得到答案。所以你可以做的是采取更多的国家代码数组和On微调onSelected方法将选定的位置设置为文本视图,但一定要保持国名和国家代码索引相同。或者我会建议使用HashMap相同。

//在创建之前在下面添加以下内容 TextView textview; String [] countrycode = {“+91”,“+1”,“+81”,“+61”,“+1”};

和onItemSelected()方法执行此

textview.setText(COUNTRYCODE [位置]);