2013-05-20 40 views
1

在我的android應用程序中,我有一個autocompletetextview feild向用戶建議不同的狀態名稱。 代碼如下:基於第一個值更新第二個自動完成文本視圖

TextWatcher state_text=new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     // TODO Auto-generated method stub 
     str_state=actv_state.getText().toString(); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, 
      int after) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     // TODO Auto-generated method stub 

    } 
}; 
actv_state.addTextChangedListener(state_text); 

這個我想在顯示城市名稱後:

ArrayAdapter<String> state_adapter=new ArrayAdapter<String>(this, android.R.layout.select_dialog_item,state); 
    actv_state=(AutoCompleteTextView)findViewById(R.id.edt_state); 
    actv_state.setThreshold(1); 
    actv_state.setAdapter(state_adapter); 

然後我通過這種方式使用TextWatcher藉此狀態的值的字符串另一個基於選定狀態的自動完成文本視圖。 我似乎無法弄清楚我在哪裏放置此代碼以顯示基於所選狀態的城市名稱?

if(str_state.equalsIgnoreCase("MADHYA PRADESH")) 
     { 
      ArrayAdapter<String> mp_city_adapter=new ArrayAdapter<String>(this, android.R.layout.select_dialog_item,mp_city); 
      actv_city=(AutoCompleteTextView)findViewById(R.id.app_city); 
      actv_city.setThreshold(1); 
      actv_city.setAdapter(mp_city_adapter); 
     } 

     if(str_state.equalsIgnoreCase("CHATTISGARH")) 
     { 
      ArrayAdapter<String> mp_city_adapter=new ArrayAdapter<String>(this, android.R.layout.select_dialog_item,mp_city); 
      actv_city=(AutoCompleteTextView)findViewById(R.id.app_city); 
      actv_city.setThreshold(1); 
      actv_city.setAdapter(mp_city_adapter); 
     } 

我該怎麼去?我似乎無法弄清楚! 如果有人知道任何解決方案,請幫助! 謝謝!

+0

當你打電話過去的代碼塊?確保在您的文本(str_state)發生更改時設置城市適配器。 – ottel142

+0

我認爲你必須把這段代碼放在onItemSelected或onItemClick監聽器中,這樣你才能決定設置哪個適配器。現在決定哪種方法最合適 – UnderGround

+0

在改變文本後使用str_state – Senthil

回答

1

它應該是內部自動完成的TextView itemClick在聽者

actv_state.setOnItemClickListener(new OnItemClickListener(){ 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) { 

     if(actv_state.getText().toString().equals("MADHYA PRADESH")) 
    { 
     ArrayAdapter<String> mp_city_adapter=new ArrayAdapter<String>(this, android.R.layout.select_dialog_item,mp_city); 
     actv_city=(AutoCompleteTextView)findViewById(R.id.app_city); 
     actv_city.setThreshold(1); 
     actv_city.setAdapter(mp_city_adapter); 
    } 

    if(actv_state.getText().toString().equals("CHATTISGARH")) 
    { 
     ArrayAdapter<String> mp_city_adapter=new ArrayAdapter<String>(this, android.R.layout.select_dialog_item,mp_city); 
     actv_city=(AutoCompleteTextView)findViewById(R.id.app_city); 
     actv_city.setThreshold(1); 
     actv_city.setAdapter(mp_city_adapter); 
    } 

     } 
    }); 
+0

這不起作用... setOnItemclickListner不能在autocompletetextview上工作 – shivani

+0

你試過嗎? Iam在我的應用程序中使用它沒有任何問題。 –

+0

我試着把這個完全相同的代碼我得到一個錯誤'構造函數ArrayAdapter (新的AdapterView.OnItemClickListener(){},int,字符串[])未定義' – shivani

1

嘗試這樣

TextWatcher state_text=new TextWatcher() { 

@Override 
public void onTextChanged(CharSequence s, int start, int before, int count) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void beforeTextChanged(CharSequence s, int start, int count, 
     int after) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void afterTextChanged(Editable s) { 
    // TODO Auto-generated method stub 
      str_state=s.toString(); 
} 
}; 
相關問題