我有setOnItemClickListener
没有被调用,我无法找出原因。
该代码是在线课程的一部分,其功能解决方案代码可以找到here。我遇到问题的代码的特定部分在NumbersActivity.java中,并且是
// Set a click listener to play the audio when the list item is clicked on
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
// Release the media player if it currently exists because we are about to
// play a different sound file
releaseMediaPlayer();
// Get the {@link Word} object at the given position the user clicked on
Word word = words.get(position);
// Create and setup the {@link MediaPlayer} for the audio resource associated
// with the current word
mMediaPlayer = MediaPlayer.create(NumbersActivity.this, word.getAudioResourceId());
// Start the audio file
mMediaPlayer.start();
// Setup a listener on the media player, so that we can stop and release the
// media player once the sound has finished playing.
mMediaPlayer.setOnCompletionListener(mCompletionListener);
}
});
当点击列表项但我的没有时,该应用程序(如上所述)具有播放音频文件所需的行为。
我甚至尝试将我的NumbersActivity.java版本中的整个替换为应用程序的功能,以查看它是否有效(尝试并本地化错误)但没有成功。记录setOnItemClickListener
是没用的,因为它没有被调用(我的代码与上面发布的代码完全相同)。
我在这里阅读了其他答案(this和this),但那里提供的解决方案无效(我的代码已经有了这些解决方案)。
最后,我的应用程序和“解决方案代码”应用程序中raw
目录的结构完全相同(认为它可能与创建列表项对象时找不到资源有关)。
我不知道出了什么问题或其他调试方式,所以如果有人有想法,我真的很感激它!
content_list.xml
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/root_list_view"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.android.miwok.NumbersActivity" />
single_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="88dp"
android:layout_width="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/numbers_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingRight="16dp"
android:paddingLeft="16dp"
android:paddingBottom="16dp"
android:src="@mipmap/ic_launcher" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/single_view"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/numbers_image">
<TextView
android:id="@+id/text_view_miwok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="16dp"
android:textColor="@color/white"
android:textStyle="bold"/>
<TextView
android:id="@+id/text_view_english"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:textColor="@color/white"
android:layout_marginLeft="16dp" />
</LinearLayout>
<Button
android:id="@+id/play_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Nothing"/>
</LinearLayout>
编辑:添加评论的答案。
1)本课程使用ListView进行教育,后来会介绍RecyclerView。解决方案代码使用ListView,但它可以工作。
2)添加了XML。
3)活动代码atm是在问题开头的链接中复制粘贴的。