저는 BaseAdapter의 getView() 메소드에서 모든 오디오 파일 (앨범 아트 포함)을 동적으로 검색하는 응용 프로그램을 개발 중입니다.ListView를 사용하여 BaseAdapter에서 ConvertView 런타임을 삭제하십시오.
지금 listView에서 터치하여 항목을 삭제할 수 있습니다. (예 : listView의 세 번째 항목을 클릭하면 세 번째 항목을 삭제하거나 삭제해야합니다.)
music_cursor 코드 :
String[] proj = { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Video.Media.SIZE, MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM_ID, MediaStore.Audio.Media.TITLE };
Cursor musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null);
int count = musiccursor.getCount();
어댑터 코드 :
public class MusicAdapter extends BaseAdapter {
private Context mContext;
public MusicAdapter(Context con) {
mContext = con;
}
public int getCount() {
return count;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView,
ViewGroup parent) {
String id = null;
ViewHolder holder;
LayoutInflater inflater = getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.sub_layout, null);
holder = new ViewHolder();
holder.ID_ = (TextView) convertView.findViewById(R.id.txtSongName);
holder.SIZE_ = (TextView) convertView.findViewById(R.id.txtSongSize);
holder.ARTIST = (TextView) convertView.findViewById(R.id.txtSongArtist);
holder.TITLE_image = (ImageView) convertView.findViewById(R.id.imgArtWork);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// code for retrieving audio name and set to textView
music_column_index = musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
musiccursor.moveToPosition(position);
id = musiccursor.getString(music_column_index);
holder.ID_.setText(id);
holder.ID_.setTextSize(15);
// code for retrieving audioSize and set to textView
music_column_index = musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);
musiccursor.moveToPosition(position);
id = (musiccursor.getString(music_column_index) + " (KB)");
holder.SIZE_.setText(id);
holder.SIZE_.setTextSize(15);
// code for retrieving audio_Artist name and set to textView
music_column_index = musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST);
musiccursor.moveToPosition(position);
id = musiccursor.getString(music_column_index);
holder.ARTIST.setText(id);
holder.ARTIST.setTextSize(15);
// code for retrieving album-art(from albumid) and set to ImageView
musiccursor.moveToPosition(position);
album_id_long = musiccursor.getLong(musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id_long);
ContentResolver res = MusicActivity.this.getContentResolver();
InputStream in = null;
try {
in = res.openInputStream(uri);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
Bitmap artwork = BitmapFactory.decodeStream(in);
holder.TITLE_image.setImageBitmap(artwork);
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//on this code of onClick,a selected item should be deleted
}
});
return convertView;
}
private class ViewHolder {
TextView ID_;
TextView SIZE_;
TextView ARTIST;
ImageView TITLE_image;
}
}
이 작업을 수행하는 또 다른 방법이 있다면. 강력하게 감사하겠습니다.
감사합니다.
무엇이 잘못되었는지 말해 줄 수 있습니까? ? – Blackbelt
나는 그것을하지 않았다 @blackbelt – Rumit
나는 당신을 비난하지 않았다 – Blackbelt