网格视图项目单击颜色更改

时间:2015-02-10 10:47:59

标签: android

我在一个活动中有一个网格我需要排序我在这里编写排序逻辑是我的代码。 但问题是当我试图点击任何网格项目时。项目的背景没有改变有没有办法改变项目背景

    HashMap<String, Integer> map = new HashMap<String, Integer>();
    ValueComparator bvc = new ValueComparator(map);
    TreeMap<String, Integer> sorted_map = new TreeMap<String, Integer>(bvc);

    map.put("Windows", sharedPref.getInt("Windows", 0));
    map.put("iOS", sharedPref.getInt("iOS", 0));
    map.put("Android", sharedPref.getInt("Android", 0));
    map.put("Blackberry", sharedPref.getInt("Blackberry", 0));
    map.put("Java", sharedPref.getInt("Java", 0));
    map.put("JQuery", sharedPref.getInt("JQuery", 0));
    map.put("Phonegap", sharedPref.getInt("Phonegap", 0));
    map.put("SQLite", sharedPref.getInt("SQLite", 0));
    map.put("Thread", sharedPref.getInt("Thread", 0));
    map.put("Video", sharedPref.getInt("Video", 0));
    sorted_map.putAll(map);

    iconList = new ArrayList<Integer>();
    Map<String, Integer> treeMap = new TreeMap<String, Integer>(sorted_map);

    for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
    System.out.println("Key : " + entry.getKey() 
                                      + " Value : " + entry.getValue());


    sortedList.add(entry.getKey());

    }
    package info.payism.onlineservice;

import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomGridAdapter extends BaseAdapter {

private Context context;
private final String[] gridValues;
ImageView imageView;

// Constructor to initialize values
public CustomGridAdapter(Context context, String[] gridValues) {
    this.context = context;
    this.gridValues = gridValues;
}

@Override
public int getCount() {

    // Number of times getView method call depends upon gridValues.length
    return gridValues.length;
}

@Override
public Object getItem(int position) {

    return null;
}

@Override
public long getItemId(int position) {

    return 0;
}

// Number of times getView method call depends upon gridValues.length

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

    // LayoutInflator to call external grid_item.xml file

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View gridView;

    if (convertView == null) {

        gridView = new View(context);

        // get layout from grid_item.xml
        gridView = inflater.inflate(R.layout.grid_item, null);

        imageView= (ImageView) gridView.findViewById(R.id.grid_item_image);
        imageView.setBackgroundColor(Color.parseColor("#ffffff"));

        // set value into textview
        Typeface font = Typeface.createFromAsset(context.getAssets(),
                "fonts/gotham-book-1361523257.ttf");
        TextView textView = (TextView) gridView
                .findViewById(R.id.grid_item_label);
        textView.setBackgroundColor(Color.parseColor("#ffffff"));
        textView.setTypeface(font);
        textView.setText(gridValues[position]);

        String icon_tag_name = gridValues[position];

        if (icon_tag_name.equals("Mobile")) {

            imageView.setImageResource(R.drawable.vmobile_blue);

        } else if (icon_tag_name.equals("Data Card")) {

            imageView.setImageResource(R.drawable.vdatacard_blue);

        } else if (icon_tag_name.equals("DTH")) {

            imageView.setImageResource(R.drawable.vdth_blue);

        } else if (icon_tag_name.equals("Postpaid/Landline")) {

            imageView.setImageResource(R.drawable.vpostpaid_blue);

        } else if (icon_tag_name.equals("Money Transfer")) {

            imageView.setImageResource(R.drawable.vmoney_blue);

        } else if (icon_tag_name.equals("Electricity")) {

            imageView.setImageResource(R.drawable.velectricity_blue);

        } else if (icon_tag_name.equals("Bus Ticket")) {

            imageView.setImageResource(R.drawable.vbus_blue);

        } else if (icon_tag_name.equals("Entertainment")) {

            imageView.setImageResource(R.drawable.ventertainment_blue);

        } else if (icon_tag_name.equals("GasBill")) {

            imageView.setImageResource(R.drawable.vgas_blue);

        } else if (icon_tag_name.equals("Waterbill")) {

            imageView.setImageResource(R.drawable.vwater_blue);

        } else if (icon_tag_name.equals("Lifeinsurence")) {

            imageView.setImageResource(R.drawable.vinsurance_blue);

        } else if (icon_tag_name.equals("GiftVoucher")) {

            imageView.setImageResource(R.drawable.vgift_blue);

        } else {
            imageView.setImageResource(R.drawable.vflight_blue);
        }

    } else {

        gridView = (View) convertView;

    }

    return gridView;
}

}

4 个答案:

答案 0 :(得分:2)

您可以将选择器定义为drawable,并将其添加为网格项的背景。

首先,创建一个包含选择器的新Drawable资源文件:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="false" android:state_focused="true" android:color="@color/your_pressed_color" />
    <item android:state_pressed="true" android:color="@color/your_pressed_color" />
    <item android:color="@color/your_default_color" />
</selector>

然后,将此选择器添加到网格项:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/your_selector"
    android:orientation="vertical">

    <!--The grid item layout elements-->

</LinearLayout>

答案 1 :(得分:0)

gridView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
            v.setBackgroundColor(Color.RED);
        }

    });

答案 2 :(得分:0)

制作一个活动XML Layout grid_color_selector.xml,并在 android:background =“@ drawable / grid_color_selector”中的自定义GridView布局中使用此布局。

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">

        <item android:drawable="@android:color/holo_blue_light" android:state_pressed="true"/>
        <item android:drawable="@android:color/holo_blue_light" android:state_selected="true"/>
        <item android:drawable="@color/white"/>

    </selector>

答案 3 :(得分:0)

使用此

/res/drawable/grid_view_item.xml

<item android:state_pressed="true" >
    <shape>
        <solid android:color="@color/grid_item_pressed"/>
    </shape>
</item>

/res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="grid_item_pressed">#ffaa66</color>
</resources>

现在将android:background="@drawable/grid_view_item"属性放在包含网格视图的xml