Q: ListView item selection issue. Deselect others when one selected I have a custom listview: http://i.stack.imgur.com/oBCCG.png
Up on clicking an item of 'ListView' the 'ImageView' with that "mark" becomes visible. 
But the problem is that I need only ONE item to be marked. How can I deselect all others items up on click? 
CustomList adapter:
    private class TimeZoneItemAdapter extends ArrayAdapter<String> {
    private Activity myContext;
    private ArrayList<String> datas;

    public TimeZoneItemAdapter(Context context, int textViewResourceId, ArrayList<String> objects) {
        super(context, textViewResourceId, objects);

        myContext = (Activity) context;
        datas = objects;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder viewHolder;
        if (convertView == null) {
            LayoutInflater inflater = myContext.getLayoutInflater();

            convertView = inflater.inflate(R.layout.listview_item, null);

            viewHolder = new ViewHolder();
            viewHolder.postNameView = (TextView) convertView.findViewById(R.id.listview_item);
            viewHolder.postImageView = (ImageView) convertView.findViewById(R.id.image_mark);

            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.postNameView.setText(datas.get(position));

        viewHolder.postNameView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//How to deselect all other items here?
                if (viewHolder.postImageView.getVisibility() != View.VISIBLE) {
                    viewHolder.postImageView.setVisibility(View.VISIBLE);
                } else {
                    viewHolder.postImageView.setVisibility(View.INVISIBLE);
                }
            }
        });

        return convertView;
    }

    class ViewHolder {
        TextView postNameView;
        ImageView postImageView;
    }

}

setting the adapter:
    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_time_zone, container, false);

    // Set the adapter
    mListView = (ListView) view.findViewById(R.id.listView_timezones);
    imageCheck = (ImageView) view.findViewById(R.id.image_mark);

    mListView.setAdapter(new TimeZoneItemAdapter(
            getActivity(),
            R.layout.listview_item,
            dataTimezones.getZonesList()
    ));

    return view;
}

Thanks for any help!

A: You might want to keep track of the currently selected list view item position in a dedicated integer variable. Then you would only need to call notifyDataSetChanged() on the adapter each time an item is selected and set the ImageView as visible in getView() if yourSelectedPosition == position.
Also check out the setOnItemClickListener() method on ListView.
EDIT:
Here's some code. 
First in the Activity attach a listener to the ListView:
listView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
        timeZoneItemAdapter.selectedPosition = position;
        timeZoneItemAdapter.notifyDataSetChanged();
    }
});

and the adapter should look something like this:
private class TimeZoneItemAdapter extends ArrayAdapter<String> {
    private Activity myContext;
    private ArrayList<String> datas;

    public int selectedPosition = -1;

    public TimeZoneItemAdapter(Context context, int textViewResourceId, ArrayList<String> objects) {
        super(context, textViewResourceId, objects);

        myContext = (Activity) context;
        datas = objects;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null)
            convertView = myContext.getLayoutInflater().inflate(R.layout.listview_item, null);

        TextView postNameView = (TextView) convertView.findViewById(R.id.listview_item);
        ImageView imageMark = (ImageView) convertView.findViewById(R.id.image_mark);

        postNameView.setText(datas.get(position));

        imageMark.setVisibility(selectedPosition == position ? View.VISIBLE : View.GONE);

        return convertView;
    }

}

This solution gets rid of the ViewHolder, but would it work for you?
