1

I have a grid in a activity i need to sort I wrote sorting logic here is my code. but the problem is when i tried to click on any grid item. background of the item is not changing is there any way to change item background

 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; } 

}

1

4 Answers 4

2

You can define a selector as a drawable and add it as background of your grid item.

First, create a new Drawable resource file which contains your selector:

<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> 

Afterwards, add this selector to your grid item:

<?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> 
Sign up to request clarification or add additional context in comments.

Comments

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

1 Comment

sorry it is not working in my case i need select effect for my grid i don't need to change the item color and thank you for your answer
0

Use this

/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> 

And now put android:background="@drawable/grid_view_item" attribute in your xml containing grid view

Comments

0

Make a activity XML Layout grid_color_selector.xml and use this layout in your custom GridView layout in android:background="@drawable/grid_color_selector".

<?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> 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.