package com.alex.video;
import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public
class
MusicListAdapter extends BaseAdapter{
private
Context myCon;
private
Cursor myCur;
private
int
pos=-1;
public
MusicListAdapter(Context con,Cursor cur){
this
.myCon = con;
this
.myCur = cur;
}
@Override
public
int
getCount() {
return
this
.myCur.getCount();
}
@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
(myCon).inflate(R.layout.musiclist,
null
);
myCur.moveToPosition(position);
TextView videoTitle = (TextView)convertView.findViewById(R.id.musictitle);
if
(myCur.getString(0).length()>24){
try
{
String musicTitle = bSubstring(myCur.getString(0).trim(),24);
videoTitle.setText(musicTitle);
}
catch
(Exception e) {
e.printStackTrace();
}
}
else
{
videoTitle.setText(myCur.getString(0).trim());
}
TextView videoArtist = (TextView)convertView.findViewById(R.id.musicartist);
if
(myCur.getString(2).
equals
(
"<unknown>"
)){
videoArtist.setText(
"未知艺术家"
);
}
else
{
videoArtist.setText(myCur.getString(2));
}
TextView videoTime = (TextView)convertView.findViewById(R.id.musictime);
videoTime.setText(toTime(myCur.getInt(1)));
ImageView videoItem = (ImageView)convertView.findViewById(R.id.musicitem);
videoItem.setImageResource(R.drawable.item);
return
convertView;
}
public
String toTime(
int
time) {
time /= 1000;
int
minute = time / 60;
int
hour = minute / 60;
int
second = time % 60;
minute %= 60;
return
String.format(
"%02d:%02d"
, minute, second);
}
public
static
String bSubstring(String s,
int
length) throws Exception
{
byte
[] bytes = s.getBytes(
"Unicode"
);
int
n = 0;
int
i = 2;
for
(; i < bytes.length && n < length; i++)
{
if
(i % 2 == 1)
{
n++;
}
else
{
if
(bytes[i] != 0)
{
n++;
}
}
}
if
(i % 2 == 1)
{
if
(bytes[i - 1] != 0)
i = i - 1;
else
i = i + 1;
}
return
new
String(bytes, 0, i,
"Unicode"
);
}
}