Я просто хотел бы знать, что мы можем переопределить метод getView()
в классе, который расширяет CursorAdapter
класса? Невыполненные методы в CursorAdapter
классе newView()
надуть View
и bindView()
связать данные из источника данных в View
. Но проблема в том, что мы не можем сохранить View
внутри метода newView()
и, следовательно, он работает garbage collection
чаще по сравнению с getView()
где мы получаем предыдущий экземпляр View
создать earlier.So мы можем переопределить getView()
вместо newView()
в классе, который простирается CursorAdapter
? И если мы можем, нам нужно каждый раз называть это самим или компилятор сделает это за нас? Код добавлен Я пытаюсь создать музыкальный проигрыватель, и я сделал один класс для обработки адаптера. Я указал тип каждого класса и создал объект этого класса адаптеров для обработки инфляции и привязки данных ,Переопределение getView() в CursorAdapter?
public class PopulatingListAdapter extends CursorAdapter {
private final static int ALL_SONGS_TYPE = 0;
private final static int ALBUM_SONGS = 1;
private final static int ARTIST_SONGS = 2;
private final static int ALBUM_TYPE = 3;
private final static int ARTIST_TYPE = 4;
private final LayoutInflater myInflater;
private int typeOfList;
public void setType(int type){
typeOfList=type;
}
public PopulatingListAdapter(Context context, Cursor c, int flags) {
super(context, c, flags);
// TODO Auto-generated constructor stub
myInflater = LayoutInflater.from(context);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
// TODO Auto-generated method stub
if(typeOfList==ALL_SONGS_TYPE)
{
TextView songTitleNameAllSongs = (TextView) view.findViewById(R.id.all_song_title);
songTitleNameAllSongs.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)));
TextView songDisplayNameAllSongs = (TextView) view.findViewById(R.id.all_song_display);
songDisplayNameAllSongs.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)));
ImageView albumArtInAllSongs = (ImageView) view.findViewById(R.id.album_art_all_songs_single_row);
}else if(typeOfList==ALBUM_TYPE)
{
TextView albumCoverTitleInAllAlbums = (TextView) view.findViewById(R.id.album_cover_title);
albumCoverTitleInAllAlbums.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM)));
TextView artistAlbumTitleInAllAlbums = (TextView) view.findViewById(R.id.artist_album_title);
artistAlbumTitleInAllAlbums.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ARTIST)));
ImageView albumArtInAllAlbum = (ImageView) view.findViewById(R.id.album_single_row_album_art);
Bitmap bmp = BitmapFactory.decodeFile(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART)));
if(bmp!=null)
albumArtInAllAlbum.setImageBitmap(bmp);
else
albumArtInAllAlbum.setImageDrawable(context.getResources().getDrawable(R.drawable.head_10));
}else if(typeOfList==ARTIST_TYPE)
{
TextView artistNameInAllArtist = (TextView) view.findViewById(R.id.artists_single_name);
artistNameInAllArtist.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Artists.ARTIST)));
}else if(typeOfList==ALBUM_SONGS)
{
TextView albumSongTitleNameInAlbumSongs = (TextView) view.findViewById(R.id.albums_songs_name_of_song);
albumSongTitleNameInAlbumSongs.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)));
TextView albumSongDisplayNameInAlbumSongs = (TextView) view.findViewById(R.id.albums_songs_name_of_album);
albumSongDisplayNameInAlbumSongs.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)));
}else if(typeOfList==ARTIST_SONGS){
TextView artistSongTitleNameInArtistSongs = (TextView) view.findViewById(R.id.artist_song_title_name);
artistSongTitleNameInArtistSongs.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)));
TextView artistSongDisplayNameInArtistSongs = (TextView) view.findViewById(R.id.artist_song_artist_name);
artistSongDisplayNameInArtistSongs.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));
}
}
/*@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
return super.getView(arg0, arg1, arg2);
}*/
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
// TODO Auto-generated method stub
View myView=null;
if(typeOfList==ALL_SONGS_TYPE)
{
myView = myInflater.inflate(R.layout.all_songs_single_row, parent, false);
}else if(typeOfList==ALBUM_TYPE)
{
myView = myInflater.inflate(R.layout.album_single_row, parent, false);
}else if(typeOfList==ARTIST_TYPE)
{
myView = myInflater.inflate(R.layout.artists_single_row, parent, false);
}else if(typeOfList==ALBUM_SONGS)
{
myView = myInflater.inflate(R.layout.albums_songs_single_row, parent, false);
}else if(typeOfList==ARTIST_SONGS)
{
myView = myInflater.inflate(R.layout.artists_song_single_row, parent, false);
}
return myView;
}
}
использование переписка. утилита просмотра уже обрабатывается для вас. Параметр bindview представляет собой завышенный или переработанный вид, который всегда действителен для вас. – njzk2
нет никакой причины, почему getview будет более эффективным. разместите свой код. – njzk2