Set Background in GridView by Position Position

I want to change the background color for a specific element in a GridView (by position).

gridview.getChildAt(1).setBackgroundResource(android.R.drawable.btn_default); 

does not work.

If I use it in OnClickListener, it works:

 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { view.setBackgroundResource(android.R.drawable.btn_default); } 

but I want to change it without clicking.


EDIT

ImageAdapter:

 public class ImageAdapter extends BaseAdapter { private final String TAG = getClass().toString(); private Context mContext; public ImageAdapter(Context c) { mContext = c; } public int getCount() { return mThumbIds.length; } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { // if it not recycled, initialize some attributes imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) convertView; } parent.getChildAt(1).setBackgroundColor(Color.RED); imageView.setImageResource(mThumbIds[position]); return imageView; } 

Activity:

 final GridView gridview = (GridView) view.findViewById(R.id.gridView); gridview.setAdapter(new ImageAdapter(MainActivity.this)); gridview.setSelection(0); gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { View previous = null; @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(previous == view) { view.setBackgroundResource(android.R.drawable.btn_default); } else { view.setBackgroundResource(android.R.drawable.btn_default); if(previous != null) previous.setBackgroundResource(0); previous = view; } } }); 

XML:

 <GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:numColumns="4" > </GridView> 
+4
source share
3 answers

Use this in getView() and see if your background changes:

 gridView.getChildAt(position).setBackgroundColor(Color.RED); 

Remember to use @Override on getView() :

 @Override public View getView(int position, View convertView, ViewGroup parent) { } 
+1
source

try it

 @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { // if it not recycled, initialize some attributes imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) convertView; } if(position==1) imageview.setBackgroundColor(Color.RED); imageView.setImageResource(mThumbIds[position]); return imageView; } 
+1
source

You can use setBackground for an element adapter.

Try it. item_image.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/bg_item_selection"> <ImageView android:layout_width="200dp" android:layout_height="200dp" /> </LinearLayout> 

bg_item_selection.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/white_color" android:state_pressed="false"/> <item android:drawable="@color/black"/> 

In the adapter.

  @Override public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ItemUserEntity itemUserEntity = new ItemUserEntity(); itemUserEntity = arrayList.get(position); LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (convertView == null) { convertView = inflater.inflate(R.layout.item_image, parent, false); } return convertView; } 
+1
source

All Articles