简体   繁体   English

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

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

I have ArayAdapter base on SimpleAdapter.我有基于 SimpleAdapter 的 ArayAdapter。 But I use getFilter with this adapter, list don't load with new list use filter.但是我将 getFilter 与此适配器一起使用,列表不加载新列表使用过滤器。 This is my filter:这是我的过滤器:

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

            }
        });

This is listView, list and adapter...这是列表视图、列表和适配器...

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);
    }

Items after use Filter was save in adapter but list don't load with filtering items.使用过滤器后的项目保存在适配器中,但列表不加载过滤项目。 I think the problem is getItem() get(position).get("item") so it has error.我认为问题是 getItem() get(position).get("item") 所以它有错误。 But I don't know how to change it.. Please help me但我不知道如何改变它..请帮帮我

You can try to use ArrayAdapter instead of SimpleAdapter .您可以尝试使用ArrayAdapter而不是SimpleAdapter

make the SimpleAdapter implements Filterable like following:使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