Как получить разные стили - в частности, цвета фона - в строках представления списка на Android? - PullRequest
0 голосов
/ 03 декабря 2011

Я уже слишком много часов пытаюсь и не могу изменить цвет фона для строк в виде списка.

Это мой код:

public class InteractiveArrayAdapter extends ArrayAdapter<Object> {

    private final List<Object> list;
    private final Activity context;

    public InteractiveArrayAdapter(Activity context, List<Object> list) {
       super(context, R.layout.rowbuttonlayout, list);
       this.context = context;
       this.list = list;
    }

    static class ViewHolder {
       protected TextView text;
       protected CheckBox checkbox;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    View view = null;
    if (convertView == null) {
        LayoutInflater inflator = context.getLayoutInflater();
        view = inflator.inflate(R.layout.rowbuttonlayout, null);
        final ViewHolder viewHolder = new ViewHolder();
        viewHolder.text = (TextView) view.findViewById(R.id.label);
        viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
        view.setTag(viewHolder);
        viewHolder.checkbox.setTag(list.get(position));
    } else {
        view = convertView;
        ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
    }
    ViewHolder holder = (ViewHolder) view.getTag();
    Object obj = list.get(position);

    //if we have a String object it's a different style 
    if (obj.getClass() == String.class) {
        holder.text.setText((String) obj);
        holder.checkbox.setVisibility(View.GONE);

      /* tried this - does not work 
        view.setBackgroundColor(0xAAAA);
        */

        holder.text.setTextColor(Color.BLUE); // this is OK
        holder.text.setTextSize((float) 18.0);  // this is OK
    } else { // it's a different row style
        holder.text.setText(x.name);
        holder.checkbox.setVisibility(View.VISIBLE); // this is OK
        holder.text.setTextColor(Color.BLACK);       // this is OK
        holder.text.setTextSize((float) 15.0);       // this is OK

    }

    return view;
    }
}

и это rowbuttonlayout.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/label"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:text="@+id/label"
            android:textSize="12dp" >
        </TextView>

</RelativeLayout>

Что бы я ни пытался изменить цвет строки - он остается черным. Единственное, что сработало, было представить ImageView. Но я думаю, что это слишком много, чтобы просто изменить цвет строки.

Кроме того, я не смог полностью заполнить строку представлением изображения.

Итак, все, что я ищу, - это решение установить цвет строки, как и другие атрибуты стиля - это, кстати, работает нормально.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 декабря 2011

Я не могу понять, но это не работает:

view.setBackgroundColor(0x222222);
0 голосов
/ 03 декабря 2011

Если вы хотите изменить цвет строки, нажмите, попробуйте это в вашем ListView Activity или с вашим ListView.

public void onItemClick(AdapterView<?> arg0, View view, int position,
        long id) {
    // TODO Auto-generated method stub
    view.setBackgroundColor(Color.CYAN);        

}

или

ListView.onItemClick(AdapterView<?> arg0, View view, int position,
        long id) {
    // TODO Auto-generated method stub
    view.setBackgroundColor(Color.CYAN);        

}

Надеюсь, это поможет.

...