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) {
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>
source share