テキストフィールドが空のときにユーザーにすべての提案を表示したい、ユーザーがドロップダウンに表示される単語を入力するときにjsonの応答から私の提案を得ているが、テキストフィールドが空でも何も表示されていないのですが、showDropDown()
Androidモニターでは次のように表示されます:入力イベントを終了しようとしましたが、入力イベント受信者は既に破棄されています。私はURLからキーワードを解析 JSONパーサーのまず、これらのクラスから私の提案アダプタを取得autcompletetextviewで提案のドロップダウンを表示する方法
public class MainActivity extends AppCompatActivity {
AutoCompleteTextView acTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
acTextView = (AutoCompleteTextView) findViewById(R.id.autoComplete);
acTextView.setAdapter(new SuggestionAdapter(this,acTextView.getText().toString()));
acTextView.setThreshold(0);
acTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
acTextView.showDropDown();
}
});
}
});
}
}
:
は、ここに私のコードです。 ゲッターセッタークラス。 提案アダプターはアダプターにフィルター処理された項目を設定します。 私のJSONレスポンス:
[{"lookupValueId":350,"lookupTypeId":33,"lookupValue":"Java"},{"lookupValueId":351,"lookupTypeId":33,"lookupValue":"C++"},{"lookupValueId":352,"lookupTypeId":33,"lookupValue":"Photoshop"},{"lookupValueId":353,"lookupTypeId":33,"lookupValue":"Java Script"}]
JSONパーサクラス:
public class JsonParse {
public List<SuggestGetSet> getParseJsonWCF(String sName)
{
List<SuggestGetSet> ListData = new ArrayList<SuggestGetSet>();
try {
String temp = sName.replace(" ", "%20");
URL js = new URL("http://SomeUrl" + temp + "%22%7D%7D");
URLConnection jc = js.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(jc.getInputStream()));
String line = reader.readLine();
JSONArray jsonResponse = new JSONArray(line);
System.out.print("DATA: " + line);
for(int i = 0; i < jsonResponse.length(); i++){
JSONObject r = jsonResponse.getJSONObject(i);
ListData.add(new SuggestGetSet(r.getInt("lookupValueId"),r.getString("lookupValue")));
}
} catch (Exception e1) {
e1.printStackTrace();
}
return ListData;
}
}
ゲッターセッタークラス:
public class SuggestGetSet {
String name;
static Integer id;
public SuggestGetSet(int id, String name){
this.setId(id);
this.setName(name);
}
public static Integer getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
そして最後にアダプタクラス:
class SuggestionAdapter extends ArrayAdapter<String> {
private List<String> suggestions;
SuggestionAdapter(Activity context,String nameFilter) {
super(context, android.R.layout.simple_dropdown_item_1line);
suggestions = new ArrayList<>();
}
@Override
public int getCount() {
return suggestions.size();
}
@Override
public String getItem(int index) {
return suggestions.get(index);
}
@NonNull
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
JsonParse jp = new JsonParse();
if (constraint != null) {
// A class that queries a web API, parses the data and
// returns an ArrayList<GoEuroGetSet>
List<SuggestGetSet> new_suggestions = jp.getParseJsonWCF(constraint.toString());
suggestions.clear();
for (int i = 0; i < new_suggestions.size(); i++) {
suggestions.add(new_suggestions.get(i).getName());
}
// Now assign the values and count to the FilterResults
// object
filterResults.values = suggestions;
filterResults.count = suggestions.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
if (results != null && results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
};
}
}
私はこの参照に従った:http://manishkpr.webheavens.com/android-autocompletetextview-example-json/
このスレッドに従ってください:[テキストがないときは、提案を表示](https://stackoverflow.com/questions/2126717/android-autocompletetextview-show-suggestions-when-no-text-entered) –
私はそれをはじめ多くのチュートリアルとstackoverflowの答え。何も役に立たなかったので、最終的に質問を投稿しました。 – KhanStan99