setOnItemClickListener 不触发任何事件
setOnItemClickListener does not fire any event
我有一个自定义列表适配器,当用户单击片段中的一行时我需要启动一个新的 Activity,但似乎 setOnItemClickListener
不起作用。
我已尝试同时添加 Toast
和 Log
,但在 logcat 中看不到任何文本,在屏幕上也看不到任何 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;
}
你必须添加
android:focusable="false"
,singolo_personaggio.xml
的可点击元素
希望这能解决问题。
我有一个自定义列表适配器,当用户单击片段中的一行时我需要启动一个新的 Activity,但似乎 setOnItemClickListener
不起作用。
我已尝试同时添加 Toast
和 Log
,但在 logcat 中看不到任何文本,在屏幕上也看不到任何 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;
}
你必须添加
android:focusable="false"
,singolo_personaggio.xml
的可点击元素
希望这能解决问题。