我有一個Fragment
正在實施ListView
。我在Fragment
類中擁有此ListView
的全局參考,並且我想要更改updateStep(int position)
方法中ListView
項目的背景顏色。我不想更改列表中每個項目的顏色。我正在片段中進行一些處理,我想相應地更改ListView
項目的顏色。從片段中更改ListView項目的背景顏色
我updateStep
方法很簡單:
public void updateStep(int position) {
if(stepsListView != null)
stepsListView.getChildAt(position).setBackgroundColor(Color.GREEN);
}
但getChildAt(position)
正在恢復null.What是其他方式獲得該項目,並更新項目的顏色。
的list_item.xml看起來是這樣的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:padding="8dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="@dimen/standard_text_size"
android:textColor="@color/gray"
android:text="@string/about_text_default"
android:id="@+id/text_list_item">
</TextView>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="16sp"
android:textColor="@color/gray"
android:text="@string/about_text_default"
android:id="@+id/test_list_item_description">
</TextView>
</LinearLayout>
和片段(具有列表)看起來像這樣:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.carmanah.views.fragments.TestListFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/text_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="@color/gray"
android:textStyle="bold"
android:textSize="@dimen/standard_heading_text_size"
android:text="@string/heading_text_tests">
</TextView>
<ListView
android:id="@+id/task_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="@dimen/standard_text_size"
android:divider="@color/gray"
android:dividerHeight="2dip">
</ListView>
</LinearLayout>
</FrameLayout>
附:我爲此清單使用CustomArrayAdapter
。
我不想改變每個項目的顏色列表中。我在Fragment中做了一些處理,我想相應地改變ListView項目的顏色。對不起,我以前沒有提到它。 –
您可以在getView方法中執行處理,因爲您無法從此方法外部修改ListView中每個項目的顏色。有一件事是可以的,你可以傳遞數組列表作爲參數在updateStep中,然後相應地運行一個迭代器。 –