It would be better if you post the code(at least the snippet in which the adapter is set up). I assume that you have used something like the below.
String[] items={"Item 1", "Item 2", "Item 3"};
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState)
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,items));
}
If this is the case, setting the tags and identifying the positions might not be possible. If you can have string validations directly rather than finding positions that is okay. But you said you have over 100 items.
So, better create a custom adapter that extends an ArrayAdapter or some other. In that CustomAdapter, in the getView(int position, View convertView, ViewGroup parent) method you set each item to a TextView by textView.setText(String[position]);
and after this set tag for each view(textView) by textView.setTag(position);
Finally you set the custom adapter with listView.setAdapter(customAdapter);
in your activity class, so that you can have getTag()
to find the position which doesn't change even after filtering your items. Let's see if I could edit my answer after you could post the code, in case you don't wanna go with my present suggestion.