Android ArrayAdapter Фоновое изображение - PullRequest
2 голосов
/ 03 мая 2011

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

Для scrollview это просто случай установки фонового изображения scrollview в атрибутах XML, но аналогичным образом для просмотра списка не работает

Я использую собственный ArrayAdapter как таковой:

private class CustomAdapter extends ArrayAdapter<TableRow>{

    private ArrayList<TableRow> items;

    public CustomAdapter(Context context, int textViewResourceId, ArrayList<TableRow> items) {
            super(context, textViewResourceId, items);
            this.items = items;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (v == null) {
                LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.list_season, null);
            }
            TableRow o = items.get(position);
            if (o != null) {
                v = o;
            }

            return v;
    }


}

, а затем

ListView lv = new ListView(this);
lv.setId(R.id.list_listView1);

ArrayList<TableRow> tablerows = new ArrayList<TableRow>();    

// create some TableRow's and add them to tablerows

CustomAdapter vAdapt = new CustomAdapter(this, R.id.list_season_item_name,tablerows);

lv.setAdapter(vAdapt);

setContentView(lv);

и мой xml:

<ListView 
android:id="@+id/list_listView1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/standard_layout">
<LinearLayout 
    android:id="@+id/list_linearLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/standard_layout">
    <TextView 
        android:text="list_textview1" 
        android:id="@+id/textView1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </TextView>
</LinearLayout>

, а также

<?xml version="1.0" encoding="utf-8"?>

<TableRow
        xmlns:android="http://schemas.android.com/apk/res/android"          
        android:layout_width="fill_parent" 
        android:layout_alignParentLeft="true" 
        android:id="@+id/list_season_row" 
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:paddingTop="10dip"
        android:paddingLeft="15dip"
        android:paddingBottom="10dip">
        <TextView
            android:layout_weight="3"
            android:layout_width="0dip"
            android:paddingRight="10dip"  
            android:id="@+id/list_season_item_name" 
            android:layout_height="wrap_content"
            style="@style/standard_item">
        </TextView>
        <TextView
            android:paddingLeft="10dip"
            android:layout_weight="1" 
            android:id="@+id/list_season_item_season" 
            android:gravity="left" 
            android:layout_gravity="right"
            android:layout_width="0dip" 
            android:layout_height="wrap_content"
            style="@style/standard_season">
        </TextView>
    </TableRow>

и мои стили

<style name="standard_item" parent="@style/standard_font">
    <item name="android:textSize">18sp</item>
</style>
<style name="standard_season" parent="@style/standard_font">
    <item name="android:textSize">12sp</item>
</style>

<style name="standard_layout" parent="@style/standard_font">
    <item name="android:background">@drawable/background_img</item>
</style>

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

Также, возможно, есть лучший способ реализовать мой ArrayAdapter, но я не заинтересован в его изменении, если нет другого способа получить эффект, которого я добиваюсь

Это уже давно меня беспокоит, так что любая помощь будет признательна,

Спасибо Ложка большого пальца

1 Ответ

1 голос
/ 03 мая 2011

Отключите оптимизацию цветовых подсказок кеша ListView по умолчанию, сделав ее прозрачной:

<style name="standard_layout" parent="@style/standard_font">
    <item name="android:background">@drawable/background_img</item>
    <item name="android:cacheColorHint">@android:color/transparent</item>
</style>

См. http://android -developers.blogspot.com / 2009/01 / почему мой черный список-android.html

...