安卓SimpleAdapter关于设置图片资源问题

除了可以用Drawable里的资源,可以直接设置图片的地址,在显示音乐封面图片时无意间发现的,本来还在想要怎么转换为Bitamp再设置进去的,嘿嘿

相信布局就不需要了

07-12 09:07:57.284 6887-6887/? I/main: initView: ./storage/emulated/0/Android/data/com.android.providers.media/albumthumbs/1468314288602
07-12 09:07:57.284 6887-6887/? I/main: 1
07-12 09:07:57.284 6887-6887/? I/main: 1

打出的Log在上面

package cn.ucai.provider;

import android.content.ContentUris;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity {
    ArrayList<Music> musicList;
    ArrayList<HashMap<String, String>> musicMapList;
    ImageView mivCover;
    TextView mtvTitle;
    ListView mlvMusic;
    String TAG = "main";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getMusic();
        initView();
    }

    private void initView() {
        mlvMusic = (ListView) findViewById(R.id.list);
        musicMapList = new ArrayList<>();
        for (Music m : musicList) {
            HashMap<String, String> music = new HashMap<>();
            music.put("cover", m.getCover());
            music.put("title", m.getName());
            Log.i("main", "initView: ."+m.getCover());
            musicMapList.add(music);
        }
        Log.i("main", musicList.size() + "");
        Log.i("main", musicMapList.size() + "");

        SimpleAdapter mAdapter = new SimpleAdapter(this,musicMapList , R.layout.music_item,
                new String[]{"cover","title"},
                new int[]{ R.id.ivCover,R.id.tvTitle});
        mlvMusic.setAdapter(mAdapter);
    }

    public void getMusic() {
        musicList = new ArrayList<>();
        String[] s = new String[]{
                MediaStore.Audio.Media._ID,
                MediaStore.Audio.Media.DISPLAY_NAME,
                MediaStore.Audio.Media.ARTIST,
                MediaStore.Audio.Media.DURATION,
                MediaStore.Audio.Media.ALBUM_ID
        };

        Cursor c = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                s, null, null, null);
        while (c.moveToNext()) {
            Music music = new Music();
            music.setId(c.getInt(c.getColumnIndex(MediaStore.Audio.Media._ID)));
            music.setName(c.getString(c.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)));
            music.setArtister(c.getString(c.getColumnIndex(MediaStore.Audio.Media.ARTIST)));
            music.setDuration(c.getString(c.getColumnIndex(MediaStore.Audio.Media.DURATION)));
            music.setCover(getCover(c.getInt(c.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID))));
            musicList.add(music);
        }
    }

    String getCover(int album_id) {
        Uri uri = MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI;
        Uri.Builder builder = uri.buildUpon();
        Uri.Builder newBuilder = ContentUris.appendId(builder, album_id);
        Uri newUri = newBuilder.build();

        String[] projection = new String[]{MediaStore.Audio.Albums.ALBUM_ART};
        Cursor c = this.getContentResolver().query(newUri, projection, null, null, null);
        if (c == null) {
            return null;
        } else if (c.moveToNext()) {
            return c.getString(c.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART));
        }

        return null;
    }

}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值