重写SimpleCursorAdapter

import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;
import android.view.View;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

public class MusicListAdapter extends SimpleCursorAdapter {

	private static boolean[] isFocused ;
	
	private static int whichClick = -1;
	
	public MusicListAdapter(Context context, int layout, Cursor c,
			String[] from, int[] to) {
		super(context, layout, c, from, to);
		
		isFocused = new boolean[c.getCount()];
		
		for(int i=0;i<c.getCount();i++){
			
			isFocused[i] = false;
		}
		
	}

	public void changeBg(int position){
		
		isFocused[whichClick==-1?0:whichClick] = false;
		
		whichClick = position;
		
		isFocused[position] = true;
		
		notifyDataSetChanged();
	}
	
	@Override
	public void bindView(View view, Context context, Cursor cursor) {

		TextView m_name = (TextView) view.findViewById(R.id.m_name);
		
		TextView m_artist = (TextView) view.findViewById(R.id.m_artist);
		
		TextView m_time = (TextView) view.findViewById(R.id.m_time);
		
		TextView m_size = (TextView)view.findViewById(R.id.m_size);
		
		String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
		
        m_name.setText(title.length()>14?title.substring(0, 14)+"...":title);
        
		m_artist.setText(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)));
		
		int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
		
		int min = (duration / 1000) / 60;
		
		int sec = (duration / 1000) % 60;
		
		m_time.setText(min+":"+sec);
		
		int size = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));
		
		size =(int)(((float)size/1024)/1024*100);
		
		float fs = (float)size/100;
		
		m_size.setText(fs+"M");
		
		view.setBackgroundResource(isFocused[cursor.getPosition()]?android.R.drawable.alert_light_frame:android.R.drawable.alert_dark_frame);
		
		super.bindView(view, context, cursor);
	}

 调用代码

  

mCursor =getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,
				null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

 

musicadapter = new MusicListAdapter(PlayMusic.this,
					R.layout.playmusic, mCursor, new String[] {}, new int[] {});

 R.layout.playmusic:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
  <!-- 歌曲名 -->
<TextView 
  android:id="@+id/m_name"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textSize="20px"
  android:layout_alignParentLeft="true"
  /> 
  <!-- 歌手 -->
<TextView 
  android:id="@+id/m_artist"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textSize="15px"
  android:layout_below="@id/m_name"
  /> 
  <!-- 播放时间 -->
<TextView 
  android:id="@+id/m_time"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textSize="15px"
  android:paddingTop="5px"
  android:layout_alignRight="@id/m_name"
  android:layout_alignParentRight="true"
  />    
<!-- 大小 -->  
<TextView 
  android:id="@+id/m_size"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textSize="15px"
  android:layout_below="@id/m_time"
  android:layout_alignParentRight="true"
  />    
</RelativeLayout>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值