0

I have two ArrayLists on the programme and I am trying to perform filtering on them. I am using Custom Simple Adapter. I used some codes to perform so but somehow it not working. Codes are as follows. Edittext is used for searching/Filtering.

First Data is fetched from the SQLiteDatabasse

public void getDetails()
    {
        Cursor result = demoSQLite.getData();

        if(result.getCount() == 0)
        {
            Toast.makeText(this, "No data Found", Toast.LENGTH_SHORT).show();
        }


        while(result.moveToNext())
        {
            String custId = result.getString(1);
           

            String custName = result.getString(0);
          

            nameContact.put(custId, custName);
        }

        List<LinkedHashMap<String, String>> listItems = new ArrayList<>();

        mCustomAdapter = new mCustomAdapter(this, listItems, R.layout.item_subitem, new String[]{"Id", "Name"}, new int[]{R.id.sampleCustId, R.id.sampleCustName});

        Iterator it = nameContact.entrySet().iterator();
        while (it.hasNext())
        {
            LinkedHashMap<String, String> nameContactMap = new LinkedHashMap<>();
            Map.Entry pair = (Map.Entry) it.next();
            nameContactMap.put("Id", pair.getKey().toString());
            nameContactMap.put("Name", pair.getValue().toString());
            listItems.add(nameContactMap);
        }

        listView.setAdapter(mCustomAdapter);
    }

Here I am Directly using getFilter method of SimpleAdpater to filter list.

    public void search()
    {
        searchText = (EditText) findViewById(R.id.searchText);

        if (custNameList.size() != 0)
        {
            searchText.addTextChangedListener(new TextWatcher()
            {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
                {
                    mCustomAdapter.getFilter().filter(charSequence);
                }

                @Override
                public void afterTextChanged(Editable editable)
                {

                }
            });
        }
        else
        {
            Toast.makeText(this, "No Entry", Toast.LENGTH_SHORT).show();
        }
    }

  


    private class mCustomAdapter extends SimpleAdapter
    {
        public mCustomAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
        {
            super(context, data, resource, from, to);
        }

        @Override
        public int getCount()
        {
            return custIdList.size();
        }

        @Override
        public Object getItem(int position)
        {
            return custIdList.get(position);
        }

        @Override
        public long getItemId(int position)
        {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            if(convertView == null)
            {
                convertView= layoutInflater.inflate(R.layout.item_subitem, null);
            }

            TextView listCustID = convertView.findViewById(R.id.sampleCustId);
            TextView listCustName = convertView.findViewById(R.id.sampleCustName);
            Button sampleButton = convertView.findViewById(R.id.sampleButton);

            listCustID.setText(custIdList.get(position));
            listCustName.setText(custNameList.get(position));
            sampleButton.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    Log.i("ITEM ", custNameList.get(position))  ;
                }
            });

            return convertView;
        }

    }
SanketG
  • 9
  • 3

0 Answers0