简单音乐播放器中的ListView的优化

package com.example.administrator.yueguanbaohe;


import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.graphics.Color;
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.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2017/12/11 0011.
 */


public class Myadapter extends BaseAdapter {
    private Context mcontext;
    private List<Map<String, String>> data;

    private int mposition_lv;

 //   这是一个构造器 接收一个上下文参数,和一个数据源。

    public Myadapter(Context context,List<Map<String, String>> mdata) {
        super();
        mcontext = context;
        data=mdata;
    }


    @Override
    public int getCount() {
        return data.size();
    }


    @Override
    public Object getItem(int position) {
        return null;
    }


    @Override
    public long getItemId(int position) {
        return 0;
    }

  //主要就是一个简单优化,对convertView的重用,然后调用view的setTag方法。其中一些数据库的操作都不用在意。


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        mposition_lv=MainActivity.position_lv;
        View view;
        Myadapter.ViewHolder holder;
        if (convertView == null) {
            view = LayoutInflater.from(mcontext).inflate(R.layout.main_lv_item, parent, false);
            holder = new Myadapter.ViewHolder();
            holder.imageView = (ImageView) view.findViewById(R.id.item_image);
            holder.title = (TextView) view.findViewById(R.id.item_tv_head);
            holder.tool = (TextView) view.findViewById(R.id.item_tv_tool);
            holder.time = (TextView) view.findViewById(R.id.time);
            view.setTag(holder);
        } else {
            view = convertView;
            view.setBackgroundColor(Color.TRANSPARENT);
            holder = (Myadapter.ViewHolder) view.getTag();
        }
        holder.imageView.setImageBitmap(BitmapFactory.decodeFile(data.get(position).get("musicId")));
        String mUriAlbums = "content://media/external/audio/albums";
        String[] projection = new String[]{"album_art"};
        int album_id = Integer.valueOf(data.get(position).get("musicId"));
        Cursor cur = mcontext.getContentResolver().query(Uri.parse(mUriAlbums + "/" + Integer.toString(album_id)), projection, null, null, null);
        String album_art = null;  
        if (cur.getCount() > 0 && cur.getColumnCount() > 0) {
            cur.moveToNext();
            album_art = cur.getString(0);
        }
        cur.close();
        holder.imageView.setImageBitmap(BitmapFactory.decodeFile(album_art));
        holder.title.setText(data.get(position).get("title"));
        holder.tool.setText(data.get(position).get("artist"));
        int time = Integer.valueOf(data.get(position).get("time")) / 1000;
        holder.time.setText(time / 60 + ":" + time % 60);
        if(position==mposition_lv) {view.setBackgroundColor(Color.BLUE);}
        else {view.setBackgroundColor(Color.TRANSPARENT);}
        return view;
    }


    class ViewHolder {
        ImageView imageView;
        TextView title;
        TextView tool;
        TextView time;
    }
}

版权声明:本文为lzybilian原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。