0

I have an listview in my application and when I add search to my listview it dosen't work at all. when I add those code to my project, getfilter doesn't resolve.

enter code here
public class MyActivity extends Activity {



InputStream in;
BufferedReader reader;
String line = "1";
public ListView listView;
VehicleAdapter adapter;
ArrayList<String> dataItems = new ArrayList<String>();
public int star = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    G.currentActivity = this;
    setContentView(R.layout.main);
    // Adad.setTestMode(true);
    ReadText();
    // String[] dataArray = dataItems.toArray(new String[0]);
    //String[] dataArray = getResources().getStringArray(R.array.listdata);
    //List<String> dataTemp = Arrays.asList(dataArray);
    // dataItems.addAll(dataTemp);
    listView = (ListView) findViewById(R.id.mainList);
    EditText ed = (EditText) findViewById(R.id.editText1);


    ArrayList<Bitmap> arr_bitmaps = new ArrayList<Bitmap>(4);
    adapter = new VehicleAdapter(MyActivity.this, arr_bitmaps, dataItems);
    listView.setAdapter(adapter);
    listView.setTextFilterEnabled(true);
    ed.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                                  int arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1,
                                      int arg2, int arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable arg0) {
            // vaghti kar bar harfi vared kard josteju mikone :
            MyActivity.this.adapter.getFilter().filter(arg0);
        }
    });

}

public class VehicleAdapter extends BaseAdapter {
    ArrayList<String> arr_calllog_name = new ArrayList<String>();
    public Activity context;
    ArrayList<Bitmap> imageId;
    public LayoutInflater inflater;

    public VehicleAdapter(Activity context, ArrayList<Bitmap> arr_bitmaps, ArrayList<String> arr_calllog_name) {
        super();
        this.imageId = arr_bitmaps;
        this.context = context;
        this.arr_calllog_name = arr_calllog_name;
        this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return arr_calllog_name.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    public class ViewHolder {

        TextView txtName;
        ImageButton btn;


    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        final ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.child_listview, null);
            holder.txtName = (TextView) convertView.findViewById(R.id.childTextView);
            holder.btn = (ImageButton) convertView.findViewById(R.id.childButton);
            convertView.setTag(holder);
        } else
            holder = (ViewHolder) convertView.getTag();


        holder.txtName.setText(PersianReshape.reshape(arr_calllog_name.get(position)));

        Typeface custom_font = Typeface.createFromAsset(getAssets(), "fonts/B Morvarid_YasDL.com.ttf");
        //holder.txtName.setTypeface(G.defaultFont);
        holder.txtName.setTypeface(custom_font);


        holder.btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent sharingIntent = new Intent(Intent.ACTION_SEND);
                sharingIntent.setType("text/plain");
                String shareBody = arr_calllog_name.get(position);
                sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject Here");
                sharingIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
                startActivity(Intent.createChooser(sharingIntent, "Share via"));
            }
        });
        return convertView;
    }

}

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.menu, menu);
    return super.onCreateOptionsMenu(menu);
}

public boolean onOptionsItemSelected(MenuItem menuItem) {

    if (menuItem.getItemId() == R.id.contact) {
        Intent intent = new Intent(MyActivity.this, ContactUs.class);
        startActivity(intent);
    }
    return super.onOptionsItemSelected(menuItem);
}

private void ReadText() {
    try {
        in = this.getAssets().open("text.txt");
        reader = new BufferedReader(new InputStreamReader(in));
        while (line != null) {
            line = reader.readLine();
            if (line != null)
                dataItems.add(line);
            else
                break;
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

my broblem is this code.

enter code here
 MyActivity.this.adapter.getFilter().filter(arg0);

why getFilter() doesn't resolve? Is it releted to my adaptor? please help

mahsa
  • 51
  • 5

2 Answers2

0

why getFilter() doesn't resolve?

Because Filterable interface is not implemented in VehicleAdapter class.

To call adapter.getFilter().filter for Activity usng Adapter object need to implement Filterable interface in Adapter class and override getFilter.

See following example how to make Adapter Filterable:

Android Filter Custom ListView (BaseAdapter)

ρяσѕρєя K
  • 132,198
  • 53
  • 198
  • 213
0

In custom adapter it would not work. this code for search will work in SimpleAdapter. For your adapter you have to write custom code for search. Follow this link it would do as per your need (search filter in custom adapetr)

Custom Listview Adapter with filter Android

Community
  • 1
  • 1
Shadik Khan
  • 1,217
  • 1
  • 8
  • 18