0

У меня есть Пользовательский BaseAdapter. Который я использовал в своем GridView. Я пытаюсь изменить цвет товара фона по позиции (также я изменить цвет текста TextView в) это мой baseadapter источникgridview изменить элемент фона по положению в Android

public class ServiciesGridAdapter extends BaseAdapter { 
private Context context; 

private List<ServicesListItem> itemList; 

public ServiciesGridAdapter(Context context, List<ServicesListItem> mobileValues) { 
    this.context = context; 
    this.itemList = mobileValues; 

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

    LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View gridView; 
    if (convertView == null) { 
     gridView = new View(context); 
     gridView = inflater.inflate(R.layout.view_servisies_gridview_items, null); 

     final LinearLayout mainLayout = (LinearLayout) gridView.findViewById(R.id.gridview_items_layout); 


     final TextView serviciesID = (TextView) gridView.findViewById(R.id.servicies_grid_id); 
     final TextView serviciesName = (TextView) gridView.findViewById(R.id.servicies_grid_name); 
     serviciesID.setText(itemList.get(position).getName()); 
     serviciesName.setText(itemList.get(position).getIdentifier() + " EUR"); 



     mainLayout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mainLayout.setBackgroundResource(R.drawable.rounded_corners_blue); 
       serviciesID.setTextColor(Color.parseColor("#ffffff")); 
       serviciesName.setTextColor(Color.parseColor("#ffffff")); 


      } 
     }); 

    } else { 
     gridView = (View) convertView; 
    } 

    return gridView; 
} 

@Override 
public int getCount() { 
    return itemList.size(); 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 


} 

когда я запускаю мое приложение в нажмом я могу изменить цвет фона, но когда я проверил другое элемент, фон первого элемента тот же. Просто, я хочу изменить только один элемент фона каждый клик.

Как я могу решить свою проблему?

ответ

1

вы должны сбросить все другие цвета вид текста и фона, так что сделайте петлю и сделать это .. попробуйте ниже код

mainLayout.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     for(int i=0;i<parent.getChildCount();i++){ 
      View c = parent.getChildAt(i); 
      c.findViewById(R.id.gridview_items_layout).setBackgroundResource(defaultResource); 
      (TextView) c.findViewById(R.id.servicies_grid_id).setTextColor(defaultColor); 
      ((TextView) c.findViewById(R.id.servicies_grid_name)).setTextColor(defaultColor); 
     } 
     mainLayout.setBackgroundResource(R.drawable.rounded_corners_blue); 
     serviciesID.setTextColor(Color.parseColor("#ffffff")); 
     serviciesName.setTextColor(Color.parseColor("#ffffff")); 


    } 
}); 
+0

Я попробовал, но у меня есть одна проблема. фон изменился, но текстовый цвет Textview всегда белый .defaultColor теперь работает в текстовом режиме –

+0

Какой цвет по умолчанию используется для textView? – Deepak

+0

# ff0000 @Deepak –

0

использование listSelector для изменения позиции фона по позиции в GridView ..

добавить цвет вы color.xml

<resources> 
<color name="onClickColor">#FFFFFF</color> 
</resources> 

добавить selecter.xml в drawable папку

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

добавить listSelector к вашему GridView

<GridView 
    android:id="@+id/grid_view" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:listSelector="@drawable/selecter"> 
</GridView> 

Посмотрите this пост ...

+0

Это также изменит цвет textView? –

+0

он заявил, что хочет изменить фон элемента, который он нажимает ... очевидно, что он изменит фон фона в виде сетки ... так что цвет текста должен быть контраст с этим ... – Mohit

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

  • Нет связанных вопросов^_^