-2

i want to run sound when click item but error show when click item image and text sho corict but click item to play sound give error can shoe error in photo and cobe nomber 48

i want to run sound when click item but error show when click item image and text sho corict but click item to play sound give error can shoe error in photo and cobe nomber 48

as shown

BabListAdapter
package com.example.learnn.ui;

import android.content.Context;
import android.media.MediaPlayer;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.example.learnn.EnglishlettersActivity;
import com.example.learnn.R;

import java.util.ArrayList;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class BabyListAdapter extends RecyclerView.Adapter<BabyListAdapter.BabyViewHolder> {
    private MediaPlayer mMediaPlayer;
    Context context;


    private ArrayList<BabyModel> letterList = new ArrayList<>();

    public BabyListAdapter() {
        this.context = context;

    }

    @NonNull
    @Override
    public BabyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new BabyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.litter_list_item, parent, false));
    }




    @Override
    public void onBindViewHolder(@NonNull BabyViewHolder holder, final int position) {
        holder.image.setImageResource(letterList.get(position).getLetterRecourceID());
        holder.text.setText (letterList.get(position).getDefaultText());
        holder.part.setOnClickListener ( new View.OnClickListener () {
            @Override
            public void onClick(View v) {
                mMediaPlayer = MediaPlayer.create ( context,letterList.get ( position ).getAudioResourceId () );
                mMediaPlayer.start();
            }
        } );

    }

    @Override
    public int getItemCount() {
        return letterList.size();
    }


    public void setList(ArrayList<BabyModel> letterList) {
        this.letterList = letterList;
        notifyDataSetChanged();
    }

    public class BabyViewHolder extends RecyclerView.ViewHolder {
        ImageView image;
        TextView text;
        LinearLayout part;


        public BabyViewHolder(@NonNull View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.imagee);
            text = itemView.findViewById(R.id.text);
            part = itemView.findViewById(R.id.part);
        }

    }


}






EnglishLetterActivity
package com.example.learnn;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.learnn.databinding.ActivityEnglishcolorsBinding;
import com.example.learnn.databinding.ActivityEnglishlettersBinding;
import com.example.learnn.ui.BabyListAdapter;
import com.example.learnn.ui.BabyModel;
import com.example.learnn.ui.BabyViewModel;

import java.util.ArrayList;

public class EnglishlettersActivity extends AppCompatActivity {

    BabyViewModel babyViewModel;
    ImageView imagee,next;
    RecyclerView recycler;
    private int index = 0;
    private  MediaPlayer mMediaPlayer;
    ArrayList arrayList,letterList;
    Context context;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityEnglishlettersBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_englishletters);

        imagee = (ImageView)findViewById(R.id.imagee);
        recycler = (RecyclerView)findViewById(R.id.recycler);



        final BabyListAdapter adapter = new BabyListAdapter();
        recycler.setAdapter(adapter);
        GridLayoutManager layoutManager = new GridLayoutManager ( this, 3 );
        recycler.setLayoutManager(layoutManager);

        babyViewModel = ViewModelProviders.of(this).get(BabyViewModel.class);
        babyViewModel.letterRecourceIDMutableLiveData.observe(this, new Observer<ArrayList<BabyModel>>() {
            @Override
            public void onChanged(ArrayList<BabyModel> babyModels) {
                adapter.setList(babyModels);

            }
        });
        babyViewModel.getLetterRecourceID();









    }


}

BabyViewModel
package com.example.learnn.ui;

import com.example.learnn.R;

import java.util.ArrayList;

import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;

public class BabyViewModel extends ViewModel {

    ArrayList arrayList;

    public MutableLiveData<ArrayList<BabyModel>> letterRecourceIDMutableLiveData = new MutableLiveData<>();
    public MutableLiveData<ArrayList<BabyModel>> defaultTextMutableLiveData = new MutableLiveData<>();
    public MutableLiveData<ArrayList<BabyModel>> audioResourceIdMutableLiveData = new MutableLiveData<>();


    public void getLetterRecourceID(){
        letterRecourceIDMutableLiveData.setValue(getDataFromDatabase());
     }

    public void getDefaultText(){
     defaultTextMutableLiveData.setValue(getDataFromDatabase());
    }
    public void getAudioResourceId(){
        audioResourceIdMutableLiveData.setValue(getDataFromDatabase());
    }

     private ArrayList<BabyModel> getDataFromDatabase(){
        ArrayList<BabyModel> arrayList = new ArrayList<>();
         arrayList.add(new BabyModel(R.drawable.a, "A",R.raw.a));
         arrayList.add(new BabyModel(R.drawable.b,"B",R.raw.b));
         arrayList.add(new BabyModel(R.drawable.c,"D",R.raw.c));
         arrayList.add(new BabyModel(R.drawable.d,"D",R.raw.d));
         arrayList.add(new BabyModel(R.drawable.e,"E",R.raw.e));
         arrayList.add(new BabyModel(R.drawable.f,"F",R.raw.f));
         arrayList.add(new BabyModel(R.drawable.g,"G",R.raw.g));
         arrayList.add(new BabyModel(R.drawable.h,"H",R.raw.h));
         arrayList.add(new BabyModel(R.drawable.i,"I",R.raw.i));
         arrayList.add(new BabyModel(R.drawable.j,"J",R.raw.j));
         arrayList.add(new BabyModel(R.drawable.k,"K",R.raw.k));
         arrayList.add(new BabyModel(R.drawable.l,"L",R.raw.l));
         arrayList.add(new BabyModel(R.drawable.m,"M",R.raw.m));
         arrayList.add(new BabyModel(R.drawable.o,"O",R.raw.o));
         arrayList.add(new BabyModel(R.drawable.p,"P",R.raw.p));
         arrayList.add(new BabyModel(R.drawable.q,"G",R.raw.g));
         arrayList.add(new BabyModel(R.drawable.r,"R",R.raw.r));
         arrayList.add(new BabyModel(R.drawable.s,"S",R.raw.s));
         arrayList.add(new BabyModel(R.drawable.t,"T",R.raw.t));
         arrayList.add(new BabyModel(R.drawable.u,"U",R.raw.u));
         arrayList.add(new BabyModel(R.drawable.v,"U",R.raw.u));
         arrayList.add(new BabyModel(R.drawable.e,"E",R.raw.e));
         arrayList.add(new BabyModel(R.drawable.w,"W",R.raw.w));
         arrayList.add(new BabyModel(R.drawable.x,"X",R.raw.x));
         arrayList.add(new BabyModel(R.drawable.y,"Y",R.raw.y));
         arrayList.add(new BabyModel(R.drawable.z,"Z",R.raw.z));
         return arrayList;
    }
}




listlitteritem
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    >

    <data>

    </data>


       <FrameLayout
           android:layout_width="wrap_content"
           android:layout_height="wrap_content">



            <LinearLayout
                android:id="@+id/part"
                android:orientation="vertical"
                android:background="@drawable/letter_style"
                android:layout_margin="5dp"
                android:layout_width="120dp"
                android:layout_height="150dp">

                <ImageView
                    android:gravity="center"
                    android:id="@+id/imagee"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="5"
                    android:layout_marginTop="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginLeft="15dp"
                    tools:context=".EnglishlettersActivity" />

                <TextView
                    android:gravity="center_horizontal"
                    android:id="@+id/text"
                    android:textSize="20sp"
                    android:textStyle="bold"
                    android:textColor="#141414"
                    android:text="ddfdfdfdf"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:layout_marginBottom="10dp"
                     />
            </LinearLayout>
       </FrameLayout>

</layout>







BabListAdapter

package com.example.learnn.ui;

import android.content.Context;
import android.media.MediaPlayer;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.example.learnn.EnglishlettersActivity;
import com.example.learnn.R;
import java.util.ArrayList;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class BabyListAdapter extends RecyclerView.Adapter<BabyListAdapter.BabyViewHolder> {
    private MediaPlayer mMediaPlayer;
    Context context;

    private ArrayList<BabyModel> letterList = new ArrayList<>();

    public BabyListAdapter() {
        this.context = context;
    }

    @NonNull
    @Override
    public BabyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new BabyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.litter_list_item, parent, false));
    }


    @Override
    public void onBindViewHolder(@NonNull BabyViewHolder holder, final int position) {
        holder.image.setImageResource(letterList.get(position).getLetterRecourceID());
        holder.text.setText (letterList.get(position).getDefaultText());
        holder.part.setOnClickListener ( new View.OnClickListener () {
            @Override
            public void onClick(View v) {
                mMediaPlayer = MediaPlayer.create ( context,letterList.get ( position ).getAudioResourceId () );
                mMediaPlayer.start();
            }
        } );
    }

    @Override
    public int getItemCount() {
        return letterList.size();
    }

    public void setList(ArrayList<BabyModel> letterList) {
        this.letterList = letterList;
        notifyDataSetChanged();
    }
    public class BabyViewHolder extends RecyclerView.ViewHolder {
        ImageView image;
        TextView text;
        LinearLayout part;

        public BabyViewHolder(@NonNull View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.imagee);
            text = itemView.findViewById(R.id.text);
            part = itemView.findViewById(R.id.part);
        }
    }

}






EnglishLetterActivity
package com.example.learnn;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.learnn.databinding.ActivityEnglishcolorsBinding;
import com.example.learnn.databinding.ActivityEnglishlettersBinding;
import com.example.learnn.ui.BabyListAdapter;
import com.example.learnn.ui.BabyModel;
import com.example.learnn.ui.BabyViewModel;

import java.util.ArrayList;

public class EnglishlettersActivity extends AppCompatActivity {

    BabyViewModel babyViewModel;
    ImageView imagee,next;
    RecyclerView recycler;
    private int index = 0;
    private  MediaPlayer mMediaPlayer;
    ArrayList arrayList,letterList;
    Context context;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityEnglishlettersBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_englishletters);

        imagee = (ImageView)findViewById(R.id.imagee);
        recycler = (RecyclerView)findViewById(R.id.recycler);



        final BabyListAdapter adapter = new BabyListAdapter();
        recycler.setAdapter(adapter);
        GridLayoutManager layoutManager = new GridLayoutManager ( this, 3 );
        recycler.setLayoutManager(layoutManager);

        babyViewModel = ViewModelProviders.of(this).get(BabyViewModel.class);
        babyViewModel.letterRecourceIDMutableLiveData.observe(this, new Observer<ArrayList<BabyModel>>() {
            @Override
            public void onChanged(ArrayList<BabyModel> babyModels) {
                adapter.setList(babyModels);

            }
        });
        babyViewModel.getLetterRecourceID();









    }


}

BabyViewModel
package com.example.learnn.ui;

import com.example.learnn.R;

import java.util.ArrayList;

import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;

public class BabyViewModel extends ViewModel {

    ArrayList arrayList;

    public MutableLiveData<ArrayList<BabyModel>> letterRecourceIDMutableLiveData = new MutableLiveData<>();
    public MutableLiveData<ArrayList<BabyModel>> defaultTextMutableLiveData = new MutableLiveData<>();
    public MutableLiveData<ArrayList<BabyModel>> audioResourceIdMutableLiveData = new MutableLiveData<>();


    public void getLetterRecourceID(){
        letterRecourceIDMutableLiveData.setValue(getDataFromDatabase());
     }

    public void getDefaultText(){
     defaultTextMutableLiveData.setValue(getDataFromDatabase());
    }
    public void getAudioResourceId(){
        audioResourceIdMutableLiveData.setValue(getDataFromDatabase());
    }

     private ArrayList<BabyModel> getDataFromDatabase(){
        ArrayList<BabyModel> arrayList = new ArrayList<>();
         arrayList.add(new BabyModel(R.drawable.a, "A",R.raw.a));
         arrayList.add(new BabyModel(R.drawable.b,"B",R.raw.b));
         arrayList.add(new BabyModel(R.drawable.c,"D",R.raw.c));
         arrayList.add(new BabyModel(R.drawable.d,"D",R.raw.d));
         arrayList.add(new BabyModel(R.drawable.e,"E",R.raw.e));
         arrayList.add(new BabyModel(R.drawable.f,"F",R.raw.f));
         arrayList.add(new BabyModel(R.drawable.g,"G",R.raw.g));
         arrayList.add(new BabyModel(R.drawable.h,"H",R.raw.h));
         arrayList.add(new BabyModel(R.drawable.i,"I",R.raw.i));
         arrayList.add(new BabyModel(R.drawable.j,"J",R.raw.j));
         arrayList.add(new BabyModel(R.drawable.k,"K",R.raw.k));
         arrayList.add(new BabyModel(R.drawable.l,"L",R.raw.l));
         arrayList.add(new BabyModel(R.drawable.m,"M",R.raw.m));
         arrayList.add(new BabyModel(R.drawable.o,"O",R.raw.o));
         arrayList.add(new BabyModel(R.drawable.p,"P",R.raw.p));
         arrayList.add(new BabyModel(R.drawable.q,"G",R.raw.g));
         arrayList.add(new BabyModel(R.drawable.r,"R",R.raw.r));
         arrayList.add(new BabyModel(R.drawable.s,"S",R.raw.s));
         arrayList.add(new BabyModel(R.drawable.t,"T",R.raw.t));
         arrayList.add(new BabyModel(R.drawable.u,"U",R.raw.u));
         arrayList.add(new BabyModel(R.drawable.v,"U",R.raw.u));
         arrayList.add(new BabyModel(R.drawable.e,"E",R.raw.e));
         arrayList.add(new BabyModel(R.drawable.w,"W",R.raw.w));
         arrayList.add(new BabyModel(R.drawable.x,"X",R.raw.x));
         arrayList.add(new BabyModel(R.drawable.y,"Y",R.raw.y));
         arrayList.add(new BabyModel(R.drawable.z,"Z",R.raw.z));
         return arrayList;
    }
}




listlitteritem
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    >

    <data>

    </data>


       <FrameLayout
           android:layout_width="wrap_content"
           android:layout_height="wrap_content">



            <LinearLayout
                android:id="@+id/part"
                android:orientation="vertical"
                android:background="@drawable/letter_style"
                android:layout_margin="5dp"
                android:layout_width="120dp"
                android:layout_height="150dp">

                <ImageView
                    android:gravity="center"
                    android:id="@+id/imagee"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="5"
                    android:layout_marginTop="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginLeft="15dp"
                    tools:context=".EnglishlettersActivity" />

                <TextView
                    android:gravity="center_horizontal"
                    android:id="@+id/text"
                    android:textSize="20sp"
                    android:textStyle="bold"
                    android:textColor="#141414"
                    android:text="ddfdfdfdf"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:layout_marginBottom="10dp"
                     />
            </LinearLayout>
       </FrameLayout>

</layout>
griffins
  • 7,079
  • 4
  • 29
  • 54
Yasser
  • 1
  • 3
  • `this.context = context;` – I'd imagine there's a warning on that line in `BabyListAdapter`'s constructor, because those are both the same thing. You're assigning `context` to itself, so it remains null. You presumably meant to have a `Context` parameter there – i.e., `public BabyListAdapter(Context context)` – and then the constructor call would be `new BabyListAdapter(this)`. – Mike M. Nov 12 '19 at 12:17
  • 1
    Possible duplicate of [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – a_local_nobody Nov 12 '19 at 12:35
  • ITS DONE DOOD i want to set colore to item with sound when click item – Yasser Nov 12 '19 at 13:01

2 Answers2

0

Change made in your adpter

public BabyListAdapter(Context context) {
    this.context = context;
}

In your activity

BabyListAdapter adapter = new BabyListAdapter(EnglishlettersActivity.this);
Thoriya Prahalad
  • 2,492
  • 2
  • 13
  • 16
0

Try to get context from View v like below

mMediaPlayer = MediaPlayer.create ( v.getContext(),letterList.get ( position ).getAudioResourceId () );

instead of

mMediaPlayer = MediaPlayer.create ( context,letterList.get ( position ).getAudioResourceId () );
Md. Asaduzzaman
  • 14,963
  • 2
  • 34
  • 46