首页 > 代码库 > Android 点击ListView(或GridView)的一个item,使其里面textview变色,点击另一个这个恢复原来颜色

Android 点击ListView(或GridView)的一个item,使其里面textview变色,点击另一个这个恢复原来颜色

今天作一个项目,就是做视频app,如果电视剧的话有许多剧集,点击一个item,播放不同的剧集,要有点击效果,并且默认是选择第一个。花费了一段时间,自己觉得有点难

度,现在和大家分享一下,下面是效果显示:

技术分享

 

这个类是例子主类:

 

<span style="font-size:14px;">public final class MainActivity extends Activity {    private GridView gridView;    private ArrayList< String> numberList=new ArrayList<String>();;    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // "mMediaItem.mDirector---------------"+VideoDetailActivity_Phone.mediaItem.mDes);        gridView = (GridView) findViewById(R.id.video_detail_series_gridview);                for (int j = 0; j < 10; j++) {                        numberList.add("" + (j+1));        }        final SeriesFragmentDataAdapter seriesAdapter = new SeriesFragmentDataAdapter(this,numberList);        gridView.setAdapter(seriesAdapter);                gridView.setOnItemClickListener(new OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view,                    int position, long id) {                // TODO Auto-generated method stub//这句是通知adapter改变选中的position                    seriesAdapter.clearSelection(position);//关键是这一句,激情了,它可以让listview改动过的数据重新加载一遍,以达到你想要的效果                    seriesAdapter.notifyDataSetChanged();            }        });    }    }这个类是例子adapter:public class SeriesFragmentDataAdapter extends BaseAdapter {    private LayoutInflater inflater;    private ArrayList<String> numberList=new ArrayList<String>();    private int selectedPosition=0;    public SeriesFragmentDataAdapter(Context context,            ArrayList<String> numberList) {        inflater = LayoutInflater.from(context);        this.numberList = numberList;    }    @Override    public int getCount() {        // TODO Auto-generated method stub        return numberList.size();    }    @Override    public Object getItem(int position) {        // TODO Auto-generated method stub        return numberList.get(position);    }    @Override    public long getItemId(int position) {        // TODO Auto-generated method stub        return position;    }//这句是把listview的点击position,传递过来    public void clearSelection(int position) {        selectedPosition = position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        // TODO Auto-generated method stub        ViewHolder holder;                if (convertView == null) {            holder = new ViewHolder();            convertView = inflater.inflate(R.layout.global_series_item, null);            holder.textview = (TextView) convertView                    .findViewById(R.id.video_detail_series_item_text);            convertView.setTag(holder);        }        holder = (ViewHolder) convertView.getTag();        if (numberList.get(position).length() > 0) {            holder.textview.setText(numberList.get(position));        }        //判断点击了哪个item,然后判断,让他的textview变色        if(selectedPosition==position){            holder.textview.setTextColor(Color.parseColor("#ff6501"));                }else{            holder.textview.setTextColor(Color.parseColor("#404040"));        }        return convertView;    }     public class ViewHolder {        public  TextView textview;    }}</span>

Android 点击ListView(或GridView)的一个item,使其里面textview变色,点击另一个这个恢复原来颜色