如何突出在特定的网格视图项目? [英] How to highlight the grid view item on select?

查看:94
本文介绍了如何突出在特定的网格视图项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建具有图像网格视图布局和text.I想多选它是工作的罚款项目,但我想强调这是选择的网格项目。

I am creating a Grid view layout with image and text.I want multi-select of item which is working fine but i want to highlight the grid items which is selected.

下面是我的code:

public class FragMent1 extends Fragment{

        BaseAdapter MyAdapter;
    private Context mContext;

    @SuppressLint("ValidFragment")
    public FragMent1(Context c) {
        mContext = c;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        //View view = inflater.inflate(R.layout.g, null);
        View view = inflater.inflate(R.layout.gridview,null);
        final GridView listView = (GridView) view.findViewById(R.id.mainGrid);
        listView.setAdapter(new Adapter());
        //listView.setSelection(1);
        listView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);
        listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {

            @Override
            public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public void onDestroyActionMode(ActionMode mode) {
                // TODO Auto-generated method stub

            }

            @Override
            public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                // TODO Auto-generated method stub

                mode.setTitle("Select Items");
                mode.setSubtitle("One item selected");
                return true;

            }

            @Override
            public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                // TODO Auto-generated method stub


                int selectCount = listView.getCheckedItemCount();
                switch (selectCount) {
                case 1:
                    mode.setSubtitle("One item selected");

                    break;
                default:
                    mode.setSubtitle("" + selectCount + " items selected");

                    break;
                }

                return true;
            }

            @Override
            public void onItemCheckedStateChanged(ActionMode mode, int position,
                    long id, boolean checked) {
                // TODO Auto-generated method stub



                int selectCount = listView.getCheckedItemCount();
                switch (selectCount) {
                case 1:
                    mode.setSubtitle("One item selected");
                    break;
                default:
                    mode.setSubtitle("" + selectCount + " items selected");
                    break;
                }

            }
        });


        return view;
    }

    private class Adapter extends BaseAdapter {

        @Override
        public int getCount() {
            return mThumbIds.length;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            View myView = convertView;

            ImageView image;
            if (convertView == null) {
                image = new ImageView(FragMent1.this.getActivity());
                image.setLayoutParams(new GridView.LayoutParams(85, 85));
                image.setScaleType(ImageView.ScaleType.CENTER_CROP);



                LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);           
                myView = inflater.inflate(R.layout.grid_items_ontap, null);


                // Add The Image!!!           
                ImageView iv = (ImageView)myView.findViewById(R.id.grid_item_image_OnTap);
                iv.setImageResource(mThumbIds[position]);


                // Add The Text!!!
                TextView tv = (TextView)myView.findViewById(R.id.grid_item_text_onTap);
                tv.setText(names[position] );






            }
            return myView;
        }

        private Integer[] mThumbIds = {
                R.drawable.car, R.drawable.car,
                R.drawable.car, R.drawable.car,
                R.drawable.car,R.drawable.car,R.drawable.car
        };

        private String[] names={"ab","cd","ef","gh","ij","kl","mn"};


    }
}

我应该怎么添加到code为突出,这将要选择的网格项。

what should i add to the code for highlighting the grid item which will be selected.

请给我建议一些方法来做到这一点。 先谢谢了。

Please suggest me some way to do it. Thanks in advance.

推荐答案

您可以使用选择器高亮显示项目

you can use selector to highlight item

在绘制文件夹中创建一个XML文件

In drawable folder create a xml file

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/blue" android:state_selected="true"/>
    <item android:drawable="@color/transparent"/>

</selector>

和设置您的GridView的listSelector像

and set listSelector of your gridview like

安卓listSelector =@可绘制/ list_selector

android:listSelector="@drawable/list_selector"

这篇关于如何突出在特定的网格视图项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆