AlertDialog上的AutoCompleteTextView实现

时间:2013-11-05 15:34:56

标签: android

我在OnClickListener方法中实现了AutoCompleteTextView。但是,一旦我单击AutoCompleteTextView并且仍然出现键盘,我看不到下拉文本。我喜欢的是显示下拉文本,键盘应该是不可见的。可能有什么不对? 我的源代码是

public void runNextTask(){
        final View addView = getLayoutInflater().inflate(R.layout.addnewtracker, null);                     
        final TrackerInfo newInfo = new TrackerInfo();


        //autocompletetextview 1
        final String[] type = {"Vehicle", "Person", "Pet", "Others"};   
        final AutoCompleteTextView actvtype1 = (AutoCompleteTextView) addView.findViewById(R.id.autoCompleteTextView1);
        actvtype1.setOnItemClickListener(new OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                in.hideSoftInputFromWindow(arg1.getWindowToken(), 0);
                ArrayAdapter<String> typeadapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1,type);
                actvtype1.setThreshold(1);
                actvtype1.setAdapter(typeadapter);
                actvtype1.setTextColor(Color.BLACK);
            }

        });


        //autocompletetextview 2
        final String[] model = {"TS102", "TS103"};
        final AutoCompleteTextView actvtype2 = (AutoCompleteTextView) addView.findViewById(R.id.autoCompleteTextView2);
        actvtype2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                InputMethodManager imm = (InputMethodManager)getSystemService(Service.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(actvtype2.getWindowToken(), 0);
                ArrayAdapter<String> modeladapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1,model);
                actvtype2.setThreshold(1);
                actvtype2.setAdapter(modeladapter);
                actvtype2.setTextColor(Color.BLACK);
            }
        });



        new AlertDialog.Builder(this).setTitle("New Tracker").setView(addView)
        .setPositiveButton("ADD", new DialogInterface.OnClickListener() 
        {
            @SuppressLint("SimpleDateFormat")
            public void onClick(DialogInterface dialog, int whichButton) 
            {                   
                TextView temp;


                temp = (TextView)addView.findViewById(R.id.IDeditText);
                newInfo.setIdnumber(temp.getText().toString());

                newInfo.setDescription(actvtype1.getText().toString());

                temp = (TextView)addView.findViewById(R.id.SimCardEdit);
                newInfo.setSimcardnumber(temp.getText().toString());


                newInfo.setModel(actvtype2.getText().toString());

                simnumber = temp.getText().toString();
                if(!simnumber.matches("[+0-9]+")){

                    return;
                }
                SimpleDateFormat df = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
                Date today = Calendar.getInstance().getTime(); 
                String reportDate = df.format(today);
                newInfo.setTime(reportDate);
                newInfo.setActivationStatus();
                if(!newInfo.getIdnumber().equals("") && !newInfo.getModel().equals("") 
                        && !newInfo.getDescription().equals("") && !newInfo.getSimcardnumber().equals(""))
                {
                      addNewTracker(newInfo);
                }

            }
        }).setNegativeButton("Cancel", null).show();

    }

我的xml如下

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/IDnumber"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/IDnumber" />

<EditText
    android:id="@+id/IDeditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10" 
    android:inputType="text">        
    <requestFocus />
</EditText>

<TextView
    android:id="@+id/SimCardNum"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Sim_card_number" />

<EditText
    android:id="@+id/SimCardEdit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="text"
     />

<TextView
    android:id="@+id/description"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/description" />   

<AutoCompleteTextView
    android:id="@+id/autoCompleteTextView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:ems="10" 
    android:text=""

 />   

<TextView
    android:id="@+id/model"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Tracker_model"         
    />    
<AutoCompleteTextView
    android:id="@+id/autoCompleteTextView2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:ems="10" 
    android:text=""
 />

2 个答案:

答案 0 :(得分:0)

尝试添加autocompletetextview(xml)

 <requestFocus />

答案 1 :(得分:0)

现在所有的工作都是我想要的。 我有两个EditText和两个AutoCompleteTextView。 我想仅为EditText显示键盘,但是AutoCompleteTextView键盘是隐藏的。仅显示下拉列表。现在所有的工作都像我一样。我分享我的工作。

final View addView = getLayoutInflater().inflate(R.layout.addnewtracker, null); 

        final TrackerInfo newInfo = new TrackerInfo();          

        String[] type = {"Vehicle", "Person", "Pet", "Others"}; 
        final AutoCompleteTextView actvtype1 = (AutoCompleteTextView) addView.findViewById(R.id.autoCompleteTextView1);     
        actvtype1.setInputType(InputType.TYPE_NULL);
        final ArrayAdapter<String> typeadapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_multiple_choice,type);    
        actvtype1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                actvtype1.showDropDown();
                actvtype1.setAdapter(typeadapter);
                actvtype1.setTextColor(Color.BLACK);

            }
        });


        String[] model = {"TS102", "TS103"};
        final AutoCompleteTextView actvtype2 = (AutoCompleteTextView) addView.findViewById(R.id.autoCompleteTextView2);
        actvtype2.setInputType(InputType.TYPE_NULL);
        final ArrayAdapter<String> modeladapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_multiple_choice,model);
        actvtype2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                actvtype2.showDropDown();
                actvtype2.setAdapter(modeladapter);
                actvtype2.setTextColor(Color.BLACK); 

            }
        });


        final AlertDialog.Builder alert = new AlertDialog.Builder(this).setTitle("New Tracker").setView(addView);

        alert.setPositiveButton("ADD", new DialogInterface.OnClickListener() 
        {


            @SuppressLint("SimpleDateFormat")
            public void onClick(DialogInterface dialog, int whichButton) 
            {                   
                TextView temp;
                temp = (TextView)addView.findViewById(R.id.IDeditText);
                newInfo.setIdnumber(temp.getText().toString());                                 
                newInfo.setDescription(actvtype1.getText().toString());                 
                temp = (TextView)addView.findViewById(R.id.SimCardEdit);
                newInfo.setSimcardnumber(temp.getText().toString());                    
                newInfo.setModel(actvtype2.getText().toString());   
                if(!(actvtype2.getText().toString().equals("TS102")||actvtype2.getText().toString().equals("TS103")))
                {
                     Toast.makeText(getBaseContext(), "Model type doesn't match",
                                Toast.LENGTH_SHORT).show();
                     return;
                }
                simnumber = temp.getText().toString();
                if(!simnumber.matches("[+0-9]+")){

                    return;
                }
                SimpleDateFormat df = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
                Date today = Calendar.getInstance().getTime(); 
                String reportDate = df.format(today);
                newInfo.setTime(reportDate);
                newInfo.setActivationStatus();
                if(!newInfo.getIdnumber().equals("") && !newInfo.getModel().equals("") 
                        && !newInfo.getDescription().equals("") && !newInfo.getSimcardnumber().equals(""))
                {
                      addNewTracker(newInfo);
                }

            }
        }).setNegativeButton("Cancel", null).show();

xml是

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/IDnumber"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/IDnumber" />

<EditText
    android:id="@+id/IDeditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10" 
    android:inputType="text">        
    <requestFocus />
</EditText>

<TextView
    android:id="@+id/SimCardNum"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Sim_card_number" />

<EditText
    android:id="@+id/SimCardEdit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="text"
     />

<TextView
    android:id="@+id/description"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/description" />   

<AutoCompleteTextView
    android:id="@+id/autoCompleteTextView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:ems="10"
    android:dropDownHeight="200dp"  
    android:text=""/>

<TextView
    android:id="@+id/model"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Tracker_model"         
    />    
<AutoCompleteTextView
    android:id="@+id/autoCompleteTextView2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:ems="10"         
    android:dropDownHeight="100dp"  
    android:text=""/>

<View
    android:layout_width="1dp"
    android:layout_height="50dp">
</View>