GridView变色

 GridView一般是显示九宫格效果之类的,今天因为项目需求做了调整,但是突然发现好多 东西已经不适合了,于是借鉴了案例后做了更改,本编的效果就是默认显示GridView中的第5个item,点击另一个item变色后,原来的item恢复过来,类似于腾讯视频的选集效果,而且一般点击变色是通过创建selector 类型 的xml文件来操作的而本片的博客是直接在适配器中判断,不需要那么多的步骤,以下就是要实现的效果图,至于GridView中的一些其他属性我这里就不一一描述了

 

  

 1.在将要显示的页面中添加GridView控件

 <GridView
        android:stretchMode="columnWidth"
        android:verticalSpacing="10dp"
        android:id="@+id/faGrid"
        android:numColumns="4"
        android:layout_marginTop="10dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></GridView>

2. 添加要在GridView中显示的item布局(本人的是一个单纯的TextView)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_gravity="center"

    android:layout_height="wrap_content">
    <TextView
        android:gravity="center"
         android:id="@+id/texts"


        android:layout_width="60dp"
        android:layout_height="60dp" />
</LinearLayout>

3.接下来就是编码了,


public class MainActivity extends AppCompatActivity {
    private GridView gridView;
    private ArrayList< String> numberList=new ArrayList<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //拿到gridview的id
        gridView = (GridView) findViewById(R.id.faGrid);
        //初始化要在item显示的户籍
        String myfa[] ={"1","5","10","20","50","100","200","300","400","500"};
           //将数组中显示的信息添加到集合中
        for (int j = 0; j < myfa.length; j++) {

            numberList.add(myfa[j]);
        }
        //将集合中的数据传入适配器
        final SeriesFragmentDataAdapter seriesAdapter = new SeriesFragmentDataAdapter(this,numberList);
        gridView.setAdapter(seriesAdapter);
        //gridview点击事件进行判断是否变色
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                // TODO Auto-generated method stub
                 seriesAdapter.clearSelection(position);
                 seriesAdapter.notifyDataSetChanged();
            }
        });
    }


    public class SeriesFragmentDataAdapter extends BaseAdapter {

        private LayoutInflater inflater;
        private ArrayList<String> numberList = new ArrayList<String>();
        //这一个是设置默认显示的item下标,我默认显示的是第一个,也可以通过更改下标来改变默认显示的item
        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;
        }

        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();
                //拿到item的xml
                convertView = inflater.inflate(R.layout.layout_item, null);
                //拿到item中的控件id
                holder.textview = (TextView) convertView
                        .findViewById(R.id.texts);
                convertView.setTag(holder);
            }
            holder = (ViewHolder) convertView.getTag();
            if (numberList.get(position).length() > 0) {
                holder.textview.setText(numberList.get(position));
            }
            //设置点击的颜色更改
            if (selectedPosition == position) {
                holder.textview.setTextColor(Color.parseColor("#ff6501"));
            } else {
                holder.textview.setTextColor(Color.parseColor("#404040"));
            }
            return convertView;
        }

        public class ViewHolder {
            public TextView textview;
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值