0

I want to create a music project that contains the title and image of each music track on the mobile device. The title is displayed but the image of each song is not displayed. If possible, give me the correct method of receiving and sending photos to the adapter class in full so that I can solve this problem. I checked the site for this problem, but none of the answers solve the problem. Class codes: MainActivity.java

package com.example.learningaboum1;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import android.Manifest;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.ListView;

import java.io.File;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
    ListView lsv;
    String[] permission = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
    String[] projection = {MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ALBUM_ID};
    String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";
    ArrayList<Strucher> strucherArray = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lsv = findViewById(R.id.lsv);
        ActivityCompat.requestPermissions(MainActivity.this, permission, 12);
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode==12){
            if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
                Cursor cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null);
                while (cursor.moveToNext()){
                    String titleMusic = cursor.getString(cursor.getColumnIndexOrThrow(projection[0]));
                    int IDMusic = cursor.getInt(cursor.getColumnIndexOrThrow(projection[1]));
                    String IdMusic = String.valueOf(IDMusic);
                    Strucher strucher = new Strucher(titleMusic, IdMusic);
                    strucherArray.add(strucher);
                }
                Adapter adapter = new Adapter(MainActivity.this, strucherArray);
                lsv.setAdapter(adapter);
            }
        }
    }
}

Strucher.java

package com.example.learningaboum1;

public class Strucher{
    String title, path;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public Strucher(String title, String path) {
        this.title = title;
        this.path = path;
    }
}

Adapter.java

package com.example.learningaboum1;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.io.File;
import java.util.ArrayList;
public class Adapter extends BaseAdapter {
    TextView txtTitle;
    ImageView imgMusic;
    Context c;
    ArrayList<Strucher> sturchersArrayList = new ArrayList<>();
    public Adapter(Context c, ArrayList<Strucher> sturchersArrayList) {
        this.c = c;
        this.sturchersArrayList = sturchersArrayList;
    }
    @Override
    public int getCount() {
        return sturchersArrayList.size();
    }
    @Override
    public Object getItem(int position) {
        return position;
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = LayoutInflater.from(c).inflate(R.layout.music_layout, parent, false);
        txtTitle = convertView.findViewById(R.id.txtTitle);
        imgMusic = convertView.findViewById(R.id.imgMusic);
        txtTitle.setText(sturchersArrayList.get(position).getTitle());
        try{
            String pathMu = sturchersArrayList.get(position).getPath();
            File file = new File(pathMu);
            Uri uri = Uri.fromFile(file);
            imgMusic.setImageURI(uri);
        }catch (Exception e) {
            imgMusic.setImageResource(R.drawable.baseline_music_video_24);
        }
        return convertView;
    }
}

I want to see a page with a list of mobile music titles and a picture of each.

Parisa H
  • 1
  • 2

0 Answers0