L'aide personnalisée simpleCursorAdapter
Je suis en train d'essayer d'accéder à une liste d'activité de l'aide personnalisée.J'ai essayé directement sans utiliser un adaptateur personnalisé c'était bon travail, mais parce que je veux ajouter plus de fonctions dans la liste de point de vue, je veux mettre en œuvre un adaptateur personnalisé.Maintenant, je l'ai essayé, mais j'obtiens une liste vide-vue sans données visibles.
Liste-Activité
public class MainActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
String[] projection = {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DURATION,
};
//query
musiccursor = this.managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,projection,selection,null,sortOrder);
music_column_index = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
int a[]= new int[]{R.id.TitleSong,R.id.Artist};
Custom_Adapter adapter = new Custom_Adapter(this,R.layout.music_items, musiccursor, new String[]{MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.ARTIST} ,a);
this.setAdapter(adapter);
}
}
Coutume Adaptateur
public class Custom_Adapter extends SimpleCursorAdapter {
private Context mContext;
private Context appContext;
private int layout;
private Cursor cr;
private final LayoutInflater inflater;
public Custom_Adapter(Context context,int layout, Cursor c,String[] from,int[] to) {
super(context,layout,c,from,to);
this.layout=layout;
this.mContext = context;
this.inflater=LayoutInflater.from(context);
this.cr=c;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
//TODO Auto-generated method stub
super.bindView(view, context, cursor);
view=inflater.inflate(layout, null, false);
TextView titleS=(TextView)view.findViewById(R.id.TitleSong);
TextView artistS=(TextView)view.findViewById(R.id.Artist);
int Title_index;
int Artist_index;
cursor.moveToFirst();
while(cursor.isLast()){
Title_index=cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
Artist_index=cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST);
titleS.setText(cursor.getString(Title_index));
artistS.setText(cursor.getString(Artist_index));
cr.moveToNext();
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//TODO Auto-generated method stub
return convertView;
}
}
InformationsquelleAutor Himanshu Verma | 2013-07-17
Vous devez vous connecter pour publier un commentaire.
Lors de l'extension d'un curseur adaptateur vous devez remplacer les méthodes bindView et newView. Le bindView méthode est utilisée pour lier toutes les données pour une vue donnée comme paramètre le texte sur un TextView. Le newView méthode est utilisée pour gonfler un nouveau point de vue et de le retourner, de ne pas lier les données à la vue à ce point. La plupart des cartes utilisent le getView fonction, mais lors de l'extension d'un curseur adaptateur vous devez utiliser bindView et newView.
@Override public View newView(Context ctx, Cursor cursor, ViewGroup parent) { return inflater.inflate(layout, parent, false); }
ont mieux fonctionné pour moi.ids
?vous mieux d'écrire ces lignes de code dans votre
customadapter
getview
fonction. Il fonctionne pour moi et pour vous, c'est simple.