簡體   English   中英

AutoCompleteTextView與排球與文本過濾器

[英]AutoCompleteTextView with volley with text filter

我正在嘗試從sql表中過濾數據。 這在我的查詢中。

SELECT TOP 10 ItemCode, ItemName 
    FROM [mytable]
WHERE ItemCode like '".$q."%' order by CreatedDate desc

這是我的凌空抽射

private void getItem(String s){
    JsonArrayRequest postRequest = new JsonArrayRequest (Request.Method.GET, "http://192.168.3.9/api/welcome/getItem/"+s,null,
            new  Response.Listener<JSONArray>()
            {
                @Override
                public void onResponse(JSONArray  response) {
                    try {
                        if (itemList == null) itemList = new ArrayList<>();
                        itemList.clear();
                        for(int i = 0; i < response.length(); i++){
                            Item_model m_item = new Item_model();
                            List<String> list = new ArrayList<String>();
                            m_item.setItemCode(response.getJSONObject(i).getString("ItemCode"));
                            itemList.add(m_item);
                        }
                         itemcode.setAdapter(adapter);
                        adapter.notifyDataSetChanged();
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener()
            {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d("ErrorResponse", error.toString());
                }
            }
    );
    postRequest.setRetryPolicy(new DefaultRetryPolicy(0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    postRequest.setTag("GetItem");
    queue.add(postRequest);
}

我在onCreateView內調用getItem

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) { 
        getItem("");
}

現在我的代碼工作正常,因為我想過濾,所以我使用TextWatcher ,這是我的工作。

itemcode.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) {

            }
            @Override
            public void afterTextChanged(Editable s) {
                search = s.toString();
                getItem("");
                adapter.getFilter().filter(search);
            }
        });

當我在上面實現腳本時,我的autocompletetext視圖未顯示任何數據,我該如何解決?

我的json

[{"ItemCode":"IT001","ItemName":"Blue Hat"},{"ItemCode":"IT002","ItemName":"Black Hat"}]

我已經用@pskink的方式解決了。 我不使用customadapter。

我的自動完成的最終代碼是這樣的

itemcode = v.findViewById(R.id.ItemCodeInput);
        itemcode.setThreshold(1);
        String[] from = { "name", "description" };
        int[] to = { android.R.id.text1, android.R.id.text2 };
        SimpleCursorAdapter a = new SimpleCursorAdapter(getActivity(), android.R.layout.simple_list_item_2, null, from, to, 0);
        a.setStringConversionColumn(1);
        FilterQueryProvider provider = new FilterQueryProvider() {
            @Override
            public Cursor runQuery(CharSequence constraint) {
                if (constraint == null) {
                    return null;
                }
                String[] columnNames = { BaseColumns._ID, "name", "description" };
                MatrixCursor c = new MatrixCursor(columnNames);
                try {
                    String urlString = "http://192.168.3.223:84/lesfemmesapi/welcome/getItem/"+constraint;
                    URL url = new URL(urlString);
                    InputStream stream = url.openStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
                    String jsonStr = reader.readLine();

                    JSONObject result = new JSONObject(jsonStr);
                    JSONArray jArray =  result.getJSONArray("dataItem");
                    for(int i = 0; i < jArray.length();i++) {
                        JSONObject detail = jArray.getJSONObject(i);
                        c.newRow().add(i).add(detail.getString("ItemCode")).add(detail.getString("ItemName"));
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
                return c;
            }
        };
        a.setFilterQueryProvider(provider);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM