To do this, you need to save the selected text view states. first create a map as global for ur class, like,
Map<Integer, Boolean> map_textcolor=new HashMap<Integer, Boolean>();
then change the getView ur method this way.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
// only inflate the view if it null
if (v == null) {
LayoutInflater vi
= (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.simplerow, null);
}
// get text view
TextView label = (TextView)v.findViewById(R.id.rowTextView);
*******************************************************************************
// change the row color based on selected state
Boolean selectedPos=map_textcolor.get(position);
if(selectedPos!=null&&selectedPos.booleanValue())
{
//label.setSelected(true);
label.setTextColor(Color.CYAN);
selected_view=label;
}
else
{
//label.setSelected(false);
label.setTextColor(Color.WHITE);
}
******************************************************************************
label.setText(this.getItem(position).toString());
then add code to listner like this ...
final int p=position;
label.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if(selected_view!=null)
{
label.setTextColor(Color.WHITE);
map_textcolor.remove(prev_pos);
}
selected_view=view;
label.setTextColor(Color.CYAN);
map_textcolor.put(p, true);
prev_pos=p;
}
});
return(v);
}
source
share