Java Android AutocompleteTextview显示无建议
错误:SPAN_EXCLUSIVE_EXCLUSIVE SPAN的长度不能为零Java Android AutocompleteTextview显示无建议,java,android,android-studio,arraylist,android-arrayadapter,Java,Android,Android Studio,Arraylist,Android Arrayadapter,错误:SPAN_EXCLUSIVE_EXCLUSIVE SPAN的长度不能为零 应用程序运行,但在autocompletetextview中不显示输出 英语是一门学科。我在TranslatorModel类中为json对象提供了getter和setter方法 public class MainActivity extends AppCompatActivity { private AutoCompleteTextView autoCompleteTextView; @Ove
应用程序运行,但在autocompletetextview中不显示输出
英语是一门学科。我在TranslatorModel类中为json对象提供了getter和setter方法
public class MainActivity extends AppCompatActivity {
private AutoCompleteTextView autoCompleteTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
new HttpGetTask().execute("http://192.168.0.107/abc/translator.php");
}
public class HttpGetTask extends AsyncTask<String, String, List<TranslatorModel>> {
@Override
protected List<TranslatorModel> doInBackground(String... params) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
String finalJson = buffer.toString();
JSONArray parentArray = new JSONArray(finalJson);
List<TranslatorModel> translatorModelList = new ArrayList<>();
for(int i= 0; i<parentArray.length();i++) {
JSONObject finalObject = parentArray.getJSONObject(i);
TranslatorModel translatorModel = new TranslatorModel();
translatorModel.setEnglish(finalObject.getString("englishSentence"));
translatorModelList.add(translatorModel);
}
return translatorModelList;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(List<TranslatorModel> data) {
AutoCompleteAdapter adapter = new AutoCompleteAdapter(getApplicationContext(),android.R.layout.simple_list_item_1,data);
autoCompleteTextView.setAdapter(adapter);
autoCompleteTextView.setThreshold(1);
super.onPostExecute(data);
}
}
public class AutoCompleteAdapter extends ArrayAdapter {
private List<TranslatorModel> translatorModelList;
private int resource;
private LayoutInflater inflater;
public AutoCompleteAdapter(Context context, int resource, List<TranslatorModel> objects) {
super(context, resource, objects);
translatorModelList = objects;
this.resource = resource;
inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = inflater.inflate(resource, null);
holder = new ViewHolder();
holder.autoCompleteTextView = (AutoCompleteTextView) convertView.findViewById(R.id.autoCompleteTextView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.autoCompleteTextView.setText(translatorModelList.get(position).getEnglish());
return convertView;
}
class ViewHolder {
private AutoCompleteTextView autoCompleteTextView;
}
}
}
public类MainActivity扩展了AppCompatActivity{
私有自动完成文本视图自动完成文本视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autoCompleteTextView=(autoCompleteTextView)findViewById(R.id.autoCompleteTextView);
新建HttpGetTask()。执行(“http://192.168.0.107/abc/translator.php");
}
公共类HttpGetTask扩展异步任务{
@凌驾
受保护列表doInBackground(字符串…参数){
HttpURLConnection=null;
BufferedReader reader=null;
试一试{
URL=新URL(参数[0]);
connection=(HttpURLConnection)url.openConnection();
connection.connect();
InputStream=connection.getInputStream();
reader=新的BufferedReader(新的InputStreamReader(流));
StringBuffer=新的StringBuffer();
字符串行=”;
而((line=reader.readLine())!=null){
buffer.append(行);
}
字符串finalJson=buffer.toString();
JSONArray parentArray=新的JSONArray(finalJson);
List translatorModelList=新建ArrayList();
对于(int i=0;iDid您是否得到一些json作为响应?您能否发布一个示例?可能json字符串的结构与您想象的不同。结构是正确的。我知道json响应结构。autocompletetextview中存在问题。我在代码中声明了两次autocompletetextview类。OnCreateView为on。ViewHolder类为one。并分配了同样的xml ID请参见,您使用了错误的数据过滤方法(注意:这是您关于ACTV
过滤的第五个问题)[{“sentenceID”:“1”,“englishSentence”:“您在哪里?”}]谢谢大家,终于找到了这个问题所需的解决方案。你得到了一些json作为响应吗?你能发布一个例子吗?也许json字符串的结构与你想象的不同。结构是正确的。我知道json响应结构。autocompletetextview中存在问题。我在代码中声明了两次autocompletetextview类。on对于OnCreateView。一个用于ViewHolder类。并为它们分配了相同的xml idsee,您使用了错误的数据过滤方法(注意:这是您关于此ACTV
过滤的第五个问题)[{“sentenceID”:“1”,“EnglishEntence”:“您在哪里?”}]谢谢大家,终于找到了此问题所需的解决方案