从ListView访问ImageView-Element

时间:2017-06-27 20:20:32

标签: java android

我正在尝试从自定义ListView访问ImageView元素以更改其背景颜色。访问和使用TextView是没有问题的。但是真的不知道如何使用ImageView。感谢任何帮助。

btw显示列表没有任何问题。所以适配器一切正常。

list_layout.xml
    

<ImageView
    android:id="@+id/friendIcon"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginBottom="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginTop="5dp"
    android:background="#0d8fe1"
    android:src="@drawable/transparent_background_96x96" />

<TextView
    android:id="@+id/friendName"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_marginLeft="15dp"
    android:layout_marginTop="5dp"
    android:gravity="center"
    android:text="test"
    android:textSize="20sp" />
</LinearLayout>

activ_layout.xml(在这种情况下是否重要?)

    <RelativeLayout 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"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:layout_marginTop="?attr/actionBarSize"
        tools:context=".activities.FriendsActivity">


        <!-- Here we are defining ListView in our XML file-->
        <ListView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/list"/>


    </RelativeLayout>
    </RelativeLayout>

活动代码

//Declaring Array adapter
ArrayAdapter<String> countryAdapter = new ArrayAdapter<String>(FriendsActivity.this,R.layout.friends_list_layout, R.id.friendName, FriendsActivity.arr);



 //Setting the android ListView's adapter to the newly created adapter
 mListView.setAdapter(countryAdapter);

 for(int i=0; i < mListView.getCount(); i++){

   //obviously wrong code. No idea how to iterate through the ListView and getting the backround color to change it

   ImageView iview = (ImageView) mListView.findViewById(R.id.friendIcon);
   iview.setBackgroundColor(Color.RED);
 }

2 个答案:

答案 0 :(得分:0)

AFAIK,您所做的只是从字符串数组向ListView添加内容。

我相信能够访问每个imageview的唯一方法是创建自定义适配器(甚至使用带有自定义ViewHolder的RecyclerView)并实现getter方法或监听器。

答案 1 :(得分:0)

为此,您需要编写自己的适配器,而不是使用ArrayAdapter

这是一个很好的教程,解释如何实现一个。 http://www.ezzylearning.com/tutorial/customizing-android-listview-items-with-custom-arrayadapter

WeatherAdapter.java是自定义适配器,在类中,public View getView(int position, View convertView, ViewGroup parent)方法是每个listview项膨胀的地方。 (它被称为列表视图的每一行,如循环)

您可以访问该行的每一行的imageview和textview,并使用您喜欢的颜色对其进行充气。 `position是它正在膨胀的行的行号。