Kindly help me in my code, It doesn't search perfect all other values remain on their position except the search able string.
Here is the code of filterable class
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Interpolator.Result;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
public class ListViewAdapter_claimlist extends BaseAdapter implements Filterable{
Activity context;
String claimid[];
String ref[];
String policy[];
String natureofloss[];
String registration[];
String status[];
private ItemFilter mFilter = new ItemFilter();
private List<String>originalData = null;
private List<String>filteredData = null;
private List<String>claimidFilter = null;
private List<String>refFilter = null;
private List<String>nautreoflossfilter = null;
private List<String>registrationFilter = null;
private List<String>statusFilter = null;
ArrayList<abc> alldata = new ArrayList<abc>();
public ListViewAdapter_claimlist(Activity context, String[] claimid, String[] ref,String[] policy, String[] natureofloss,String[] registration, String[] status) {
super();
this.context = context;
this.claimid = claimid;
this.ref = ref;
this.policy = policy;
this.natureofloss = natureofloss;
this.registration = registration;
this.status = status;
this.filteredData = new ArrayList<String>(Arrays.asList(this.policy));
this.originalData = new ArrayList<String>(Arrays.asList(this.policy));
this.claimidFilter = new ArrayList<String>(Arrays.asList(this.claimid));
this.refFilter = new ArrayList<String>(Arrays.asList(this.ref));
this.nautreoflossfilter = new ArrayList<String>(Arrays.asList(this.natureofloss));
this.registrationFilter = new ArrayList<String>(Arrays.asList(this.registration));
this.statusFilter = new ArrayList<String>(Arrays.asList(this.status));
for(int i = 0; i<this.claimid.length; i++)
{
abc a = new abc();
a.setClaimid(claimid[i]);
a.setRef(ref[i]);
a.setPolicy(policy[i]);
a.setNatureofLoss(natureofloss[i]);
a.setRegistration(registration[i]);
a.setStatus(status[i]);
alldata.add(a);
}
}
public int getCount() {
return filteredData.size();
}
public Object getItem(int position) {
return filteredData.get(position);
}
public long getItemId(int position) {
return 0;
}
private class ViewHolder {
TextView cliamid;
TextView ref;
TextView policy;
TextView natureofloss;
TextView registration;
TextView status;
}
public View getView(int position, View convertView, final ViewGroup parent)
{
final ViewHolder holder;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null)
{
convertView = inflater.inflate(R.layout.rowitem_cliamlist, null);
holder = new ViewHolder();
holder.cliamid = (TextView) convertView.findViewById(R.id.tv_claims);
holder.ref = (TextView) convertView.findViewById(R.id.tv_referencepolicy);
holder.policy = (TextView) convertView.findViewById(R.id.tv_policyNo);
holder.natureofloss = (TextView) convertView.findViewById(R.id.tv_natureoflos);
holder.registration = (TextView) convertView.findViewById(R.id.tv_registration);
holder.status = (TextView) convertView.findViewById(R.id.tv_claimstatus);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
abc aa = alldata.get(position);
holder.cliamid.setText(aa.getClaimid());
holder.ref.setText(aa.getRef());
holder.policy.setText(filteredData.get(position));
holder.natureofloss.setText(aa.getNatureofloss());
holder.registration.setText(aa.getRegistration());
holder.status.setText(aa.getStatus());
return convertView;
}
//--------------------------------------------------------------------------------
public Filter getFilter() {
return mFilter;
}
private class ItemFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
String filterString = constraint.toString().toLowerCase();
FilterResults results = new FilterResults();
final List<String> list = originalData;
int count = list.size();
final ArrayList<String> nlist = new ArrayList<String>(count);
String filterableString ;
for (int i = 0; i < count; i++) {
filterableString = list.get(i);
if (filterableString.toLowerCase().contains(filterString)) {
nlist.add(filterableString);
}
}
results.values = nlist;
results.count = nlist.size();
return results;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredData = (ArrayList<String>) results.values;
notifyDataSetChanged();
}
}
public class abc
{
String claimid;
String ref;
String policy;
String natureofloss;
String registration;
String status;
public void setClaimid(String claimid)
{
this.claimid = claimid;
}
public void setRef(String ref)
{
this.ref = ref;
}
public void setPolicy(String policy)
{
this.policy = policy;
}
public void setNatureofLoss(String natureofloss)
{
this.natureofloss = natureofloss;
}
public void setRegistration(String registration)
{
this.registration = registration;
}
public void setStatus(String status)
{
this.status = status;
}
public String getClaimid()
{
String claimid = this.claimid;
return claimid;
}
public String getRef()
{
String ref = this.ref;
return ref;
}
public String getPolicy()
{
String Policy = this.policy;
return Policy;
}
public String getNatureofloss()
{
String Natureofloss = this.natureofloss;
return Natureofloss;
}
public String getRegistration()
{
String Registration = this.registration;
return Registration;
}
public String getStatus()
{
String Status = this.status;
return Status;
}
}
}
Edit Text Event Handler
searchText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
ClaimList.this.lviewAdapter.getFilter().filter(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
Before Search
When Search by Police No(policy# in code)
Thank in Advance :)