I'm creating a ListView with an ArrayAdapter like this:
final ListView lv = (ListView) findViewById(R.id.listView1);
final EntryAdapter adapter = new EntryAdapter(this, items);
lv.setAdapter(adapter);
and the Adapter looking something like:
this.items = items;
vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder holder;
final Item i = items.get(position);
if (i != null) {
if(i.isSection()){
SectionItem si = (SectionItem)i;
v = vi.inflate(R.layout.list_item_section, null);
v.setOnClickListener(null);
v.setOnLongClickListener(null);
v.setLongClickable(false);
final TextView sectionView = (TextView) v.findViewById(R.id.list_item_section_text);
sectionView.setText(si.getTitle());
}else{
EntryItem ei = (EntryItem)i;
v = vi.inflate(R.layout.carlistdetails, null);
holder = new ViewHolder();
final TextView name = (TextView)v.findViewById(R.id.name);
final TextView location = (TextView)v.findViewById(R.id.location);
final TextView speed = (TextView)v.findViewById(R.id.speed);
final ImageView image = (ImageView) v.findViewById(R.id.imageView1);
if (name != null)
name.setText(ei.name);
if(location != null)
location.setText(ei.location);
if(speedandcontact != null)
speed.setText(ei.speed);
image.setImageResource(R.drawable.car);
}
}
return v;
}
I'm having a listview with each item consisting of 3 TextViews and 1 ImageView. Now I'm trying to filter the Adapter by
TextWatcher filterTextWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
adapter.getFilter().filter(s);
}
};
EditText filterText = (EditText) findViewById(R.id.sb);
filterText.addTextChangedListener(filterTextWatcher);
which is kinda working but giving strange results (most of the time all items disappear from the list). I want to filter only by the name field of the adapter/ items.
Any ideas on how to do that?
this issue as like as from that: http://stackoverflow.com/a/13156885/1752867
you can try use your custom adapter and filter.
in code :
a: for (int i = 0; i < allObjectItemsArray.size(); i++) {
T m = allObjectItemsArray.get(i);
// cast m to your class
String fistnameAndLastName = ((your object class) m).getFirstName() + ((your object class) m).getLastName();
if (fistnameAndLastName.toLowerCase().contains(constraint)) {
filteredItems.add(m);
continue a;
}
}
you can modify this line String fistnameAndLastName = ((your object class) m).getFirstName() + ((your object class) m).getLastName();
to
like : String name = ((your object class) m).getName();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With