Как изменить только одну строку за раз в Listview?

Я пытаюсь найти решение следующей проблемы. у меня естьListview генерируется с использованиемSimpleadapter, Когда я нажимаю на строку в списке, я хочу создать макет с идентификаторомcolorful как видимый. Я могу сделать это. Но моя проблема начинается здесь. Когда я нажимаю на другую строку, скажем, строку № 5, цветная разметка видна, но разметка также видна и для ранее нажатой строки. То, что я хочу сделать, это сделать макет цветным видимым только для строки, по которой щелкнули (т. Е. Он должен быть виден только для одной строки за раз, то есть для текущей строки, выбранной при щелчке, и скрыт для всех оставшихся строк), а макет должен стать невидимым для ранее кликнул строки. Я пытался делать сviewholder но это не помогает Мой фрагмент кода ниже. Веди меня шаг за шагом, так как я очень плохо знаком с Android.

           final BaseAdapter k=new SimpleAdapter(getActivity(),val,R.layout.mytaskdata,new String[]{"sname","heading","desc","id","path","receiver","sender"},new int[]{R.id.textView1,R.id.textView2,R.id.textView3,R.id.hide1,R.id.hide2,R.id.hide3,R.id.hide4})
      {

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            final View v = super.getView(position, convertView, parent);
            TextView myname=(TextView)v.findViewById(R.id.textView1);
            TextView mydes=(TextView)v.findViewById(R.id.textView2);
            TextView mytopic=(TextView)v.findViewById(R.id.textView3);
            ImageView edit=(ImageView)v.findViewById(R.id.ImageView03);
            sent.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub
                    RelativeLayout r=(RelativeLayout)arg1.findViewById(R.id.colorful);
                //  r.setVisibility(arg1.VISIBLE);
                    int temp=sent.getCheckedItemPosition();
                    Log.i("itemposition",""+temp);

                    Toast.makeText(getActivity(),"pos"+arg2+"hii"+positionThatSaysHi,1000).show();
                    if(arg2!=positionThatSaysHi)
                    {
                        r.setVisibility(arg1.VISIBLE);
                        positionThatSaysHi = arg2;
                        notifyDataSetChanged();
                    }
                    else
                    {
                        r.setVisibility(arg1.GONE);
                         notifyDataSetChanged();
                    }
            });

Ответы на вопрос(2)

Ваш ответ на вопрос