2014-10-01 2 views
0

Я создаю arrayadapter с этой линии:Изменение фона перед созданием адаптера

adapter=new ArrayAdapter<String>(getActivity(),R.layout.message_bar,strArr); 

И это мой message_bar.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/message" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="6dp" 
     android:layout_marginRight="6dp" 
     android:layout_marginLeft="4dp" 
     android:paddingTop="10dp" 
     android:paddingLeft="15dp" 
     android:paddingRight="5dp" 
     android:gravity="left" 
     android:layout_gravity="left" 
     android:text="dfgdfgdf" 
     android:textSize="12dp" 
     android:background="@drawable/mes4" /> 

Могу ли я изменить фон этого XML, и гравитацию, прежде чем создавать адаптер с Ява ?

+0

вы можете назвать 'адаптер = новый ArrayAdapter (getActivity(), R.layout.message_bar, strArr);' после OnCreate()? –

+0

Да. Вы попробовали? –

+0

Нет, я не могу позвонить после onCreate() –

ответ

1

Вы должны использовать пользовательский адаптер.

class Myadapter extends ArrayAdapter<String>{ 

     LayoutInflater inflater=null; 

     public Myadapter(Context context, int resource, int textViewResourceId, 
       List<String> objects) { 
      super(context, resource, textViewResourceId, objects); 
      inflater = (LayoutInflater)getLayoutInflater(); 
     } 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      // TODO Auto-generated method stub 

      View row = convertView; 
      if(convertView==null) 
       row= inflater.inflate(R.layout.custom_list_item, null); 

      // CHANGE COLOR HERE 
      ((TextView)row.findViewById(R.id.txtTitle)).setBackground(Color.Red); 

      return row; 
     } 
    } 

или переопределить GetView:

new ArrayAdapter<String>(getActivity(),R.layout.message_bar,strArr) 
    { 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 

      View row = convertView; 
      if(convertView==null) 
      { 
       LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       row =vi.inflate(R.layout.message_bar, null); 
      } 

      TextView txt= (TextView)row.findViewById(R.id.message); 

      //CHANGE COLOR HERE 

      return row; 
     } 
    }; 
+0

Есть ли другой способ сделать с пользовательским адаптером? –

+0

Я обновлю свой ответ. – extmkv

+0

Я получаю эту ошибку: метод getView (int, View, ViewGroup) в типе ArrayAdapter не применим для аргументов (AdapterView, View, int, long) –

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