`
bashenmail
  • 浏览: 226298 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

重写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>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics