2013-03-24 2 views
0

Я хочу изменить цвет фона для определенного элемента в GridView (по положению).Установить фон в сетке Просмотр по позиции позиции

public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { // if it's 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; 
} 

Не работает.

Если я использую его в OnClickListener это работает:

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

, но я хочу, чтобы изменить его без щелчка.

ответ

1

Вместо parent.getChildAt(1).setBackgroundColor(Color.RED); попробовать

if(position==1){ // item's position that you want to change background color 
    [VIEW_YOU_WANT_TO_CHANGE_BACKGROUND].setBackgroundColor(Color.RED); 
}else{ 
    // Set other item's background color to default background color you want 
    [VIEW_YOU_WANT_TO_CHANGE_BACKGROUND].setBackgroundColor(Color.[WHAT_COLOR_YOU_WANT]); 
} 

Надеется, что это помогает

+0

Спасибо! Работает :) – Dennis

0

Вы можете надуть View с ребенком ImageView на каждую позицию в getView(). Затем установите фон всего View.

public View getView(int position, View convertView, ViewGroup parent) { 
     final ImageView imageView; 
     View v = null; 
     if (convertView == null) { 
      v = getLayoutInflater().inflate(R.layout.item_grid, parent, false); 
      imageView = (ImageView) v.findViewById(R.id.image); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
      v.setBackground(R.drawable.whateverBackground) 
     } else { 
      v = convertView; 
     } 
     return v; 
} 

и имеет item_grid.xml взгляд, как этот

<?xml version="1.0" encoding="utf-8"?> 
<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/image" 
    android:layout_width="fill_parent" 
    android:layout_height="120dip" 
    android:adjustViewBounds="true" 
    android:contentDescription="@string/descr_image" 
    android:scaleType="centerCrop" /> 
+0

Я не мог понять вас правильно. Можете ли вы привести пример или что-то еще? Извините, но я новичок в разработке Android. – Dennis

+0

Я отредактировал свой первоначальный ответ. Он не проверен. – wufufufu

Смежные вопросы