如何通过 API 调用在 Android Studio 中实现 autocompletetextview? [英] How to implement autocompletetextview in Android Studio with an API call?
问题描述
我正在尝试使用 Android Studio 中的 autocompletetextview 为用户键入的每个字母提供建议.
I am trying to use the autocompletetextview in Android Studio to provide suggestions for every letter keyed-in by the user.
每次键入一个字母时,都会像这样进行一次 API 调用,
Every time a letter is keyed-in, an API call is made like this,
http://dev.markitondemand.com/MODApis/Api/v2/Lookup/json?input=app
http://dev.markitondemand.com/MODApis/Api/v2/Lookup/json?input=appl
http://dev.markitondemand.com/MODApis/Api/v2/Lookup/json?input=apple
从 API 调用返回的 JSON 数组填充在建议列表框中.
The JSON array that's returned from the API call is populated in the suggestions list-box.
到目前为止,我得到了这样的 activity_main.xml 文件,
So far I got the activity_main.xml file like this,
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.raam.stockmarketviewer.MainActivity">
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/stocks"
android:hint="@string/hint" />
</RelativeLayout>
在此之后,我应该如何构建 MainActivity.java 文件以完成自动建议功能?
After this how should I structure the MainActivity.java file to accomplish the auto-suggestions feature?
推荐答案
只需创建一个简单的适配器,并在每次获得结果时更新它
Just create a simple adapter and update it every time you get results
List<String> suggestions = new ArrayList<>();
ArrayAdapter<String> adapter ;
.
.
.
// in your onCreate
autocomplete = (AutoCompleteTextView)findViewById(R.id.stocks);
adapter = new ArrayAdapter<>(this,
android.R.layout.simple_dropdown_item_1line, suggestions);
autocomplete.setAdapter(arrayAdapter);
autocomplete.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) {
//retrieveData(s);
}
@Override
public void afterTextChanged(Editable s) {
retrieveData(s); //this will call your method every time the user stops typing, if you want to call it for each letter, call it in onTextChanged
}
});
.
.
.
// where you get the data, I suppose in a list
private void retrieveData(String s){
//Do your stuff here with the String s and store the list of your results in the list suggestions
suggestions = yourList;
adapter.notifyDataSetChanged();
}
这篇关于如何通过 API 调用在 Android Studio 中实现 autocompletetextview?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!