NumbersActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class NumbersActivity extends AppCompatActivity {
private MediaPlayer mMediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_numbers);
ArrayList<Word> words= new ArrayList<>();
//words.add("zero");
words.add(new Word("one","lutti",R.drawable.number_one));
words.add(new Word("two","otiiko",R.drawable.number_two));
words.add(new Word("three","tolookosu",R.drawable.number_three));
words.add(new Word("four","oyyisa",R.drawable.number_four));
words.add(new Word("five","massokka",R.drawable.number_five));
words.add(new Word("six","temmokka",R.drawable.number_six));
words.add(new Word("seven","kenekaku",R.drawable.number_seven));
words.add(new Word("eight","kawinta",R.drawable.number_eight));
words.add(new Word("nine","wo'e",R.drawable.number_nine));
words.add(new Word("ten","na'aacha",R.drawable.number_ten));
WordAdapter itemsAdapter = new WordAdapter(this, words,R.color.category_numbers);
ListView listView = (ListView) findViewById(R.id.list);
listView.setAdapter(itemsAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mMediaPlayer = MediaPlayer.create(NumbersActivity.this, R.raw.number_one);
mMediaPlayer.start(); }
});
}
}
WordAdapter.java
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import java.util.ArrayList;
//To override getView method from array adapter click on
//Code>>Override Method >> getView
/**
* {@link WordAdapter} is an {@link ArrayAdapter} that can provide the layout for each list item
* based on a data source, which is a list of {@link Word} objects.
*/
public class WordAdapter extends ArrayAdapter<Word>{
/**Resource ID for the background color for this list of words*/
private int mColorResourceId;
/**
* Create a new {@link WordAdapter} object.
*
* @param context is the current context (i.e. Activity) that the adapter is being created in.
* @param words is the list of {@link Word}s to be displayed.
*/
public WordAdapter(Activity context, ArrayList<Word> words,int colorResourceId){
super(context,0,words);
mColorResourceId = colorResourceId;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
// Check if an existing view is being reused, otherwise inflate the view
View listItemView = convertView;
if(listItemView == null){
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
}
// Get the {@link Word} object located at this position in the list
Word currentWord = getItem(position);
// Find the TextView in the list_item.xml layout with the ID miwok_text_view.
TextView miwokTextView = (TextView) listItemView.findViewById(R.id.miwok_text_view);
// Get the Miwok translation from the currentWord object and set this text on
// the Miwok TextView.
miwokTextView.setText(currentWord.getMiwokTranslation());
// Find the TextView in the list_item.xml layout with the ID default_text_view.
TextView defaultTextView = (TextView) listItemView.findViewById(R.id.default_text_view);
// Get the default translation from the currentWord object and set this text on
// the default TextView.
defaultTextView.setText(currentWord.getDefaultTranslation());
// Find the ImageView in the list_item.xml layout with the ID image.
ImageView imageView = listItemView.findViewById(R.id.text_icon);
// Check if an image is provided for this word or not
if(currentWord.hasImage()) {
// If an image is available, display the provided image based on the resource ID
imageView.setImageResource(currentWord.getImageResourceId());
// Make sure the view is visible
imageView.setVisibility(View.VISIBLE);
}
else{
// Otherwise hide the ImageView (set visibility to GONE)
imageView.setVisibility(View.GONE);
}
//Set the theme color for the list item
View textContainer = listItemView.findViewById(R.id.text_container);
//Find the color that the resource ID maps to
int color = ContextCompat.getColor(getContext(),mColorResourceId);
//Set the background color of the text container View
textContainer.setBackgroundColor(color);
// Return the whole list item layout (containing 2 TextViews) so that it can be shown in
// the ListView.
return listItemView;
}
}
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/list_item_height"
android:background="@color/tan_background" >
<ImageView
android:id="@+id/text_icon"
android:layout_width="@dimen/list_item_height"
android:layout_height="@dimen/list_item_height" />
<LinearLayout
android:id="@+id/text_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:layout_toRightOf="@id/text_icon">
<TextView
android:id="@+id/miwok_text_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="bottom"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="@android:color/white"
android:textStyle="bold"
tools:text="lutti"/>
<TextView
android:id="@+id/default_text_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="top"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="@android:color/white"
tools:text="one"/>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PLAY"/>
</LinearLayout>
setOnClickListener method on ListView is not playing any media file neither it is displaying any toast message when trying to do so. It should play the same media mp3 file once a list Item is clicked . I am not able to identify the problem the code compiles successfully. A coustom array adapter was created called wordAdapter.