我在我当前的项目中使用AutoCompleteTextView
。
详细信息:
当用户在AutoCompleteTextView
中键入数据时,我正在检查arrayList中的数据是否!!
为此我尝试下面的代码,但它没有工作它显示数组中没有数据。
任何人都可以帮忙解决这个问题吗?
我想要的是什么:
当用户键入一个字母(如果与arrayList匹配)时,我必须显示具有此字母的arrayList。
示例如果用户输入:M或Me或Ve;然后它显示有这些数据的数组列表。
这是我的代码: -
String[] planets = new String[] { "Mercury","Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune"};
autoCompleteTextView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("--------->1", "onTextChanged is +"+autoCompleteTextView.getText());
if (Arrays.asList(planets).contains(autoCompleteTextView.getText())) {
Log.i("--------->1", "Having");
}else{
Log.i("--------->1", "No");
}
}
@Override
public void afterTextChanged(Editable s) {
Log.i("--------->1", "afterTextChanged is +"+autoCompleteTextView.getText());
if (Arrays.asList(planets).contains(autoCompleteTextView.getText())) {
Log.i("--------->1", "Having");
}else{
Log.i("--------->1", "No");
}
}
});
答案 0 :(得分:0)
您可以在下面进行测试:
Arrays.asList(行星)。载(autoCompleteTextView.getText()。的toString())
此外,无需在afterTextChanged(可编辑的s)中编写代码。
onTextChanged(CharSequence s,int start,int before,int count)已经足够了。
答案 1 :(得分:0)
这是不如何在尝试破解视图之前使用AutoCompleteTextView,阅读其应如何
使用的文档:http://developer.android.com/reference/android/widget/AutoCompleteTextView.html
答案 2 :(得分:0)
试试这个解决方案:
在listSearchedPlanets中,您将获得包含在AutoCompleteTextView中输入的字符串的行星列表。
autoCompleteTextView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
List<String> listPlanets = Arrays.asList(planets);
List<String> listSearchedPlanets = new ArrayList<>();
for (int i = 0; i < listPlanets.size(); i++) {
if (listPlanets.get(i).contains(autoCompleteTextView.getText())) {
listSearchedPlanets.add(listPlanets.get(i));
}
}
if (listSearchedPlanets.size() > 0) {
Log.i("--------->1", "Having");
}else {
Log.i("--------->1", "No");
}
}
@Override
public void afterTextChanged(Editable s) {
}
});