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