0

I am trying to implement a autocompletetextview with a custom adapter which extends ArrayAdapter. The problem is that the getView for the adapter is being called, and it shows that the data is also proper. But, the views are not being displayed when I type something in the ACTextView. Any help is appreciated, thanks!

public class NewEventActivity extends AppCompatActivity {
    MemNameAdapter memNameAdapter;
    PurposeAdapter purposeAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new_event);
        ButterKnife.bind(this);

        memNameAdapter = new MemNameAdapter(this, R.layout.simple_text_view, new ArrayList<Member>());
        memNameAdapter.setDropDownViewResource(R.layout.simple_text_view);
        memNameAdapter.setNotifyOnChange(true);

        txtMemName.setAdapter(memNameAdapter);
        txtMemName.addTextChangedListener(memNmTxtWatcher);

        txtMemName.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                eMember = (Member) parent.getSelectedItem();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                eMember = null;
            }
        });        

    }

    TextWatcher memNmTxtWatcher = 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) {
            ArrayList<Member> members = eGroup.getMembers();
            if (members != null) {
                memNameAdapter.setRecords(members);
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    };

    class MemNameAdapter extends ArrayAdapter<Member> {
        Context context;
        int resource;
        ArrayList<Member> records;

        public MemNameAdapter(Context context, int resource, ArrayList<Member> records) {
            super(context, resource, records);
            this.context = context;
            this.resource = resource;
            this.records = records;
        }

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

        public void setRecords(ArrayList<Member> records) {
            this.records.clear();
            this.records.addAll(records);
            notifyDataSetChanged();
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            if (view == null) {
                view = LayoutInflater.from(context).inflate(resource, parent, false);
            }
            Log.d(TAG, "GetView: " + records.get(position).getMemberName() + ", " + view);
            ((TextView) view).setText(records.get(position).getMemberName());
            return view;
        }

    }

}
Jeevan MB
  • 148
  • 1
  • 11
  • Read this article http://stackoverflow.com/questions/33047156/how-to-create-custom-baseadapter-for-autocompletetextview – Stanojkovic Jul 15 '16 at 17:30
  • I had read that, the only difference I found was the use of filters. I tried those changes in my code, and it still didn't work, i.e. the dropdown list on ACTextView is not showing. – Jeevan MB Jul 16 '16 at 16:42

0 Answers0