setOnItemClickListener不会触发任何事件

时间:2018-01-01 16:31:06

标签: android onitemclicklistener

我有一个自定义列表适配器,当用户点击片段中的一行时,我需要启动一个新的活动,但似乎setOnItemClickListener不起作用。 我已尝试添加ToastLog,但无法在屏幕上看到任何文本或屏幕上的任何toast。

我的代码出了什么问题?

singolo_personaggio.xml (这是自定义行布局)

<?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>

这是Java代码:

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;
        }

1 个答案:

答案 0 :(得分:0)

你必须添加

android:focusable="false"

由于old Android issue而导致singolo_personaggio.xml的可点击元素。

希望这清楚这个问题。