繁体   English   中英

getItem.get(position) 而不是 get(position).get(“item”)

[英]getItem.get(position) insteads of get(position).get(“item”)

我有基于 SimpleAdapter 的 ArayAdapter。 但是我将 getFilter 与此适配器一起使用,列表不加载新列表使用过滤器。 这是我的过滤器:

searchView.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) {
                ((SimpleAdapter)ListItem.this.adapter).getFilter().filter(s);
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });

这是列表视图、列表和适配器...

private void parseItems(String jsonResposnce) {

        list = new ArrayList<>();

        try {
            JSONObject jobj = new JSONObject(jsonResposnce);
            JSONArray jarray = jobj.getJSONArray("items");


            for (int i = 0; i < jarray.length(); i++) {

                JSONObject jo = jarray.getJSONObject(i);

                String itemId = jo.getString("itemId");
                String itemName = jo.getString("itemName");
                String brand = jo.getString("brand");
                String price = jo.getString("price");
                String quantity = jo.getString("quantity");
                String sold = jo.getString("sold");
                String image = jo.getString("image");

                NumberFormat formatter = NumberFormat.getCurrencyInstance();
                String moneyString = formatter.format(Integer.parseInt(price));

                HashMap<String, String> item = new HashMap<>();
                item.put("itemId", itemId);
                item.put("itemName", itemName);
                item.put("brand", brand);
                item.put("price",moneyString);
                item.put("quantity", quantity);
                item.put("sold", sold);
                item.put("image",image);

                list.add(item);
            }
        } catch (JSONException e) {
            e.printStackTrace();
            Log.e("JSON Parser", "Error parsing data [" + e.getMessage()+"] "+jsonResposnce);
        }

        adapter = new SimpleAdapter(this,list,R.layout.list_item_row,
                new String[]{"itemName","brand","price", "itemId", "image"},new int[]{R.id.tv_item_name,R.id.tv_brand,R.id.tv_price, R.id.imgViewList}){
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                //ItemHolder itemHolder = new ItemHolder();
                if(null == convertView){
                    inflater = LayoutInflater.from(getApplicationContext());
                    convertView = inflater.inflate(R.layout.list_item_row, parent, false);

                }
                ImageView img = convertView.findViewById(R.id.imgItem);
                TextView txtName = convertView.findViewById(R.id.txtName);
                TextView txtPrice = convertView.findViewById(R.id.txtPrice);
                Glide.with(getApplicationContext()).load(list.get(position).get("image")).into(img);
                txtName.setText(list.get(position).get("itemName"));
                txtPrice.setText(list.get(position).get("price"));

                return convertView;
            }
        };
        listView.setAdapter(adapter);
    }

使用过滤器后的项目保存在适配器中,但列表不加载过滤项目。 我认为问题是 getItem() get(position).get("item") 所以它有错误。 但我不知道如何改变它..请帮帮我

您可以尝试使用ArrayAdapter而不是SimpleAdapter

使SimpleAdapter工具Filterable类似以下内容:

  adapter = new ArrayAdapter(this,list,R.layout.list_item_row,
    ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM