-1

Hey fellow programmers,

I was just programming in a listView and implementing actions for tapping a list element until I got to a point where I wanted to keep things recursively. Taken this ClickListener, I would like to have the image next to the list element changed when tapped.

list.add(Model("firstelement","description 1", R.drawable.button_activated))
list.add(Model("secondelement","description 2",R.drawable.button_activated))
listview.adapter = MyAdapter(this, R.layout.row, list)
var elementArray: IntArray = intArrayOf(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

        listview.setOnItemClickListener{ parent: AdapterView<*>, view: View, position:Int, id: Long ->
            val currentimage = ? //here I'd like to retrieve the imageview of the tapped list item
            val img: ImageView = findViewById(R.id.currentimage)
            if (elementArray.get(position)==0){
                img.setImageResource(R.drawable.button_activated)
                elementArray.set(position,1)
            }
            else if (elementArray.get(position)==1){
                img.setImageResource(R.drawable.button_dectivated)
                elementArray.set(position,0)

The images are added to the list together with the text view. How can I retrieve them to change them? Tried listview.getItemIdAtPosition but that leads to errors.

I bet there is a way - I just don't see it. Thanks in advance for any hint!

In addition, here is my layout row.xml where the list gets loaded into:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:padding="16dp"
>

    <ImageView
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:id="@+id/image0"
        android:src="@mipmap/ic_launcher"
    />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
    >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/textView1"
            android:text="first element"
            android:textStyle="bold"
            android:textSize="20sp"
            android:layout_margin="5dp"
            android:textColor="#000"
        />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView2"
            android:text="second element"
            android:textSize="18sp"
            android:layout_margin="5dp"
            android:textColor="#a9a9a9"
        />
    </LinearLayout>

</LinearLayout>
Malte Ge
  • 153
  • 3
  • 12

1 Answers1

0

Just resolved it on my own with the help of this solution: Android: Dynamically change Image in Listview

Had to access the lower imageView of the current view: ImageView = view.findViewById(R.id.image)

Malte Ge
  • 153
  • 3
  • 12