'Text change listener on list view

I have a list view with hym names. I also hav implemented a textchange listener to filter results on list view as per edit text input. The filter works fine but the problem is when i click on the result it calls an item on postion 0 instead of lets say item on position 7

public class MainActivity extends Activity {  
private ListView list;

ArrayAdapter<String> adapter;
// Search EditText
EditText search;
// ArrayList for Listview
ArrayList<HashMap<String,      String>>
colourList;

@Override
protected void             onCreate(Bundle     savedInstanceState)
{
                            super.onCreate(savedInstanceState);
                                setContentView(R.layout.main);

list=(ListView)                     findViewById(R.id.list1);

String[] colours = new     String[] 
{ 
"Black",
"Brown",
"Cream",
"Green",
"Meroon", 
"orange",
"Purple",
"Red", 
"White", 
"Yellow"};

adapter = new ArrayAdapter <     String > (this,                                 R.layout.list_item,                 R.id.colour_names, colours);

list = (ListView)     findViewById(R.id.list1);
list.setAdapter(adapter);
search = (EditText)
findViewById(R.id.search);


search.addTextChangedListener(new         TextWatcher() {



public void     onTextChanged(CharSequence cs,int     arg1,int arg2,int arg3) {


// When user changed the Text



                        MainActivity.this.adapter.getFilter().filter(cs);


}




public void     beforeTextChanged(CharSequence arg0,int arg1,int arg2,int arg3) 

{

// TODO Auto-generated method stub

}

@Override


public void     afterTextChanged(Editable arg0) 

{

// TODO Auto-generated method stub

}});
    
 list.setOnItemClickListener(new         AdapterView.OnItemClickListener()
{
public void     onItemClick(AdapterView<?> 
parent,View view,
int positions,long id)
{
if(positions==0) 
{
Intent myIntent=new     Intent(view.getContext(),                                       Black.class);
                        startActivityForResult(myIntent,0);
}
if(positions==1) 
{
Intent myIntent=new Intent(view.getContext(),
                                              Brown.class);
                    startActivityForResult(myIntent,0);
}
                if(positions==2) 
                {
Intent myIntent=new Intent
                    (view.getContext(),
                     Cream.class);
                        startActivityForResult(myIntent,0);
}
if(positions==3)
{
Intent myIntent=new Intent
(view.getContext(),
                     Green.class);
                    startActivityForResult(myIntent,0);
}
                    if(positions==4)
{
Intent myIntent=new Intent(view.getContext(),
                    Meroon.class);
                    startActivityForResult(myIntent,0);     
}
if(positions==5)
{
Intent myIntent=new  Intent(view.getContext(),Orange.class); 
   startActivityForResult(myIntent,0);
}

EDIT:

All the answers are not working, please help.



Solution 1:[1]

Use setTag() to store its original position or the id of the name on the listview item and use getTag() to determine which item has clicked

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 jafarbtech