-1

I have a custom List Adapter and I need to start a new Activity when a user clicks in a row in the fragment, but seems that setOnItemClickListener does not work. I have tried adding both Toast and Log, but can't see any text in logcat or any toast on the screen.

What's wrong with my code?

singolo_personaggio.xml (This is the custom row layout)

<?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"
    android:orientation="horizontal"
    android:padding="5dp">

    <LinearLayout
        android:id="@+id/image_container"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="3dp">

        <ImageView
            android:id="@+id/lista_personaggi_icon"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_alignParentLeft="true"
            android:src="@drawable/ic_launcher" />
    </LinearLayout>

    <TextView
        android:id="@+id/lista_personaggi_nome"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/image_container"
        android:layout_toRightOf="@+id/image_container"
        android:layout_marginLeft="10dp"
        android:textStyle="bold"
        android:textSize="22dp"
        android:text="Name"
        />

    <TextView
        android:id="@+id/lista_personaggi_ruolo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/image_container"
        android:layout_below="@+id/lista_personaggi_nome"
        android:textSize="18sp"
        android:text="Role"
        />
</RelativeLayout>

This is the Java code:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {

            Integer pageToShow = getArguments().getInt(ARG_SECTION_NUMBER);

            View rootView = inflater.inflate(R.layout.fragment_choose_character, container, false);
            ListView listView = (ListView) rootView.findViewById(R.id.listViewPersonaggi);

            personaggiDB = new DatabasePersonaggiHandler(getContext());
            ArrayList<Personaggio> personaggi = personaggiDB.getAllPersonaggi(pageToShow);

            // Adatto il personaggio alla grafica della lista
            this.m_adapter = new PersonaggioAdapter(getContext(), R.layout.riga_personaggio, personaggi);
            listView.setAdapter(this.m_adapter);

            // Su ogni elemento della lista aggiungo il click
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

                    Toast.makeText(getContext(), "show this", Toast.LENGTH_LONG);
                    Log.d("MYAPP -->", "I am here");
                    // Recupero l'intero oggetto cliccato
                    //Personaggio personaggioScelto = m_adapter.getItem(position);

                    //Intent singoloPersonaggioIntent = new Intent(getContext(), SingoloPersonaggioActivity.class);
                    //singoloPersonaggioIntent.putExtra("PersonaggioObj", personaggioScelto);
                    //startActivity(singoloPersonaggioIntent);
                }
            });

            return rootView;
        }
Dimitar
  • 4,402
  • 4
  • 31
  • 47
Christian Giupponi
  • 7,408
  • 11
  • 68
  • 113

1 Answers1

0

You have to add

android:focusable="false"

to your clickable elements of singolo_personaggio.xml due to an old Android issue.

Hopefully, this clear the issue.

JoxTraex
  • 13,423
  • 6
  • 32
  • 45
Dimitar
  • 4,402
  • 4
  • 31
  • 47