【发布时间】:2014-05-11 12:55:33
【问题描述】:
所以我让它工作......然后它坏了,我不知道为什么。我一直在努力找出问题所在。
代码结构如下:
locale = (AutoCompleteTextView) findViewById(locationText);
locale.setThreshold(3);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, locationSuggestions);
adapter.setNotifyOnChange(true);
locale.setAdapter(adapter);
locale.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if(!s.toString().contains(","))
{
String loc = s.toString().replace(" ", "%20");
new JsonTask(loc).execute();
adapter.notifyDataSetChanged();
locale.setAdapter(adapter);
}
}
});
我完全不知道该怎么做。我从本教程开始:
http://www.gaanza.com/blog/android-autocompletetextview-mysql/
我尝试使用他的自定义 AutoCompleteTextView 类来执行此操作,但与他过滤结果的方式有关的事情不起作用。
事情是这样的:我的 JsonTask 适当地更新了我的 String[] locationSuggestions。数据在那里。文本框填充了从代码前面的地理编码器中提取的初始位置。当您删除建议时,在您低于阈值并输入最多 3 个字符之前,不会弹出任何内容。在第三个字符上,下拉菜单出现片刻然后消失。如果您继续键入它不会再次显示。如果删除字符串然后输入一组新字符,下拉菜单会再次短暂弹出然后消失。
老实说,我不记得是什么改变了它。它工作正常,然后我去编辑一些布局,它停止工作。我改变了布局,甚至仍然没有。这是我的 xml 的样子:
<AutoCompleteTextView
android:id="@+id/locationText"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_column="0"
android:layout_columnSpan="3"
android:layout_gravity="fill_horizontal|center_vertical"
android:layout_margin="10dp"
android:layout_marginBottom="40dp"
android:layout_row="2"
android:drawableLeft="@drawable/locationicon"
android:ems="10"
android:imeActionLabel="actionGo"
android:singleLine="true" >
</AutoCompleteTextView>
为了完整起见,这是我的 AsyncTask:
public class JsonTask extends AsyncTask{
private String query;
@Override
protected Void doInBackground(Object... arg0) {
JSONParser jsonParser = new JSONParser();
JSONArray array;
try {
array=jsonParser.getJSONFromUrl(url + query);
JSONObject citystate = new JSONObject();
String city;
String state;
for(int i = 0; i<5; i++)
{
citystate = array.getJSONObject(i);
state = citystate.getString("State");
city = citystate.getString("City");
locationSuggestions[i] = city + ", " + state;
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();}
return null;
}
public JsonTask(String text)
{
query = text;
}
}
【问题讨论】:
标签: android autocompletetextview