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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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变色,点击另一个这个恢复原来颜色的主要内容,如果未能解决你的问题,请参考以下文章

Android:无需点击即可在Listview上设置焦点突出显示

如何在 Android 中处理 ListView 点击

android 怎么禁用ListView的点击事件

Android - ListView 中的延迟点击

Android 之 ListView 点击响应代码?

Android:如何禁用 ListView?