【问题标题】:how to show list of suggestion in AutoCompleteTextView and fill data from api如何在 AutoCompleteTextView 中显示建议列表并从 api 填充数据
【发布时间】:2014-05-10 09:15:06
【问题描述】:

AutoCompleteTextView 不显示任何建议,但数据已填充到适配器中

这是我的 CODE

public class AUTOSuggestion extends AsyncTask<String, String, String> {
    String TITLE, id,level;     
    String response = " ";
    ProgressDialog dialogProgress = new ProgressDialog(Home.this);

    String tex;

    public AUTOSuggestion(String text) {
        // TODO Auto-generated constructor stub
        tex=text;
    }

    protected void onPreExecute() {
        dialogProgress.setCancelable(true);
        dialogProgress.setMessage("Please wait..");
        dialogProgress.setIndeterminate(false);
        dialogProgress.show();

    }

    @Override
    protected String doInBackground(String... params) {
        try {
            ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
            param.add(new BasicNameValuePair("search", tex));
        /*  param.add(new BasicNameValuePair("catId", id));
            param.add(new BasicNameValuePair("level", level));*/
            response = CustomHttpClient.executeHttpPost(AUTOSUGGESTION_URL, param);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return response;
    }

    protected void onPostExecute(String response)
    {
        if (response != "" || response != null) {
            try {
                ArrayList<String>sug_list=new ArrayList<String>();
                JSONObject Obj = new JSONObject(response);
                //String status = Obj.getString("TAG_STATUS");
                JSONArray jarr=Obj.getJSONArray("0");
                for(int i=0;i < jarr.length(); i++){
                JSONObject p = (JSONObject) jarr.get(i);
                String words = p.getString("title");
                sug_list.add(words);
                }

                item = sug_list.toArray(new String[sug_list.size()]);

            } catch (JSONException e) {
                e.printStackTrace();
                Toast.makeText(getBaseContext(), e + "", Toast.LENGTH_LONG).show();
                finish();
            }

        }
        try {
            dialogProgress.dismiss();
        } catch (Exception e) {
            e.fillInStackTrace();
        }
        autocomplete = (AutoCompleteTextView) findViewById(R.id.autocomplete);
        //Toast.makeText(getBaseContext(), item.toString(), Toast.LENGTH_LONG).show();
        adapter = new ArrayAdapter<String>(Home.this,android.R.layout.simple_dropdown_item_1line, item);

        // Create adapter
        //adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, item);
        autocomplete.setThreshold(1);
        autocomplete.setAdapter(adapter);
        adapter.notifyDataSetChanged();
    }

调试时显示字样

请大家帮帮我:'(

这里的其他人建议这是我所做的更改

修改后的代码

    public class AUTOSuggestion extends AsyncTask<String, String, String> {
    String TITLE, id,level;     
    String response = " ";
    ProgressDialog dialogProgress = new ProgressDialog(Home.this);

    String tex;

    public AUTOSuggestion(String text) {
        // TODO Auto-generated constructor stub
        tex=text;
    }

    protected void onPreExecute() {
        dialogProgress.setCancelable(true);
        dialogProgress.setMessage("Please wait..");
        dialogProgress.setIndeterminate(false);
        dialogProgress.show();

    }

    @Override
    protected String doInBackground(String... params) {
        try {
            ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
            param.add(new BasicNameValuePair("search", tex));
            response = CustomHttpClient.executeHttpPost(AUTOSUGGESTION_URL, param);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return response;
    }

    protected void onPostExecute(String response)
    {
        if (response != "" || response != null) {
            try {

                JSONObject Obj = new JSONObject(response);
                //String status = Obj.getString("TAG_STATUS");
                JSONArray jarr=Obj.getJSONArray("0");
                for(int i=0;i < jarr.length(); i++){
                JSONObject p = (JSONObject) jarr.get(i);
                String words = p.getString("title");
                sug_list.add(words);
                }

                item = sug_list.toArray(new String[sug_list.size()]);

            } catch (JSONException e) {
                e.printStackTrace();
                Toast.makeText(getBaseContext(), e + "", Toast.LENGTH_LONG).show();
                finish();
            }

        }
        try {
            dialogProgress.dismiss();
        } catch (Exception e) {
            e.fillInStackTrace();
        }

        adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.item,sug_list);         
        autocomplete.setAdapter(adapter);
        adapter.notifyDataSetChanged();
        Toast.makeText(getBaseContext(),sug_list+"",Toast.LENGTH_LONG).show();
    }
}

这里是 item.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#eaeaea"
android:padding="10dp"
android:textColor="#000"
android:textSize="16sp" >

</TextView>

【问题讨论】:

  • 在添加到适配器之前打印项目数组并检查输出并告诉我们。
  • 哦,对不起,我的错误。尝试android.R.layout.simple_list_item_1 而不是android.R.layout.simple_dropdown_item_1line
  • 代码在我身边运行良好。
  • 兄弟现在....我该如何解决这个问题,一切似乎都很好:( ...有一点错误:( .....我无法追踪它
  • 是的,可能是因为我试过你的代码在我的演示项目中运行良好

标签: android json autocomplete adapter


【解决方案1】:

花了 6 个小时后我才知道我必须添加一行

autocomplete.showDropDown();

onpostasync

【讨论】:

    【解决方案2】:

    查看page

    您可能需要update UI。

    runOnUiThread(new Runnable(){
            public void run(){
                 aAdapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.item,suggest);
                 autoComplete.setAdapter(aAdapter);
                 aAdapter.notifyDataSetChanged();
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 2011-06-28
      相关资源
      最近更新 更多