J'ai besoin d'un peu d'aide avec mon adaptateur de liste personnalisée. J'utilise l'exemple de l'adaptateur de vogella.de, mais je dois trouver un moyen de définir le texte et l'image de la base de données sqlite. Voici le code de l'adaptateur que j'utilise:Android listview adaptateur afficher le texte de sqlite
import android.app.Activity;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MyArrayAdapter extends ArrayAdapter<String> {
private final Activity context;
private final String[] names;
Cursor cursor;
public MyArrayAdapter(Activity context, String[] names) {
super(context, R.layout.main_listview, names);
this.context = context;
this.names = names;
}
// static to save the reference to the outer class and to avoid access to
// any members of the containing class
static class ViewHolder {
public ImageView imageView;
public TextView textView,textView2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// ViewHolder will buffer the assess to the individual fields of the row
// layout
ViewHolder holder;
// Recycle existing view if passed as parameter
// This will save memory and time on Android
// This only works if the base layout for all classes are the same
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.main_listview, null, true);
holder = new ViewHolder();
holder.textView = (TextView) rowView.findViewById(R.id.main_name);
holder.textView2 = (TextView) rowView.findViewById(R.id.main_info);
holder.imageView = (ImageView) rowView.findViewById(R.id.main_img);
rowView.setTag(holder);
} else {
holder = (ViewHolder) rowView.getTag();
}
final Bitmap b = BitmapFactory.decodeFile("/sdcard/52dde26940e0d3081f6a086d4b54cd1c.jpg", null);
holder.textView.setText("");
holder.textView2.setText("");
holder.imageView.setImageBitmap(b);
return rowView;
}
public String[] getNames() {
return names;
}
}
Et je suis en train de mettre le texte à une vue de texte comme celui-ci:
String sql = "SELECT title FROM collections";
Cursor cursorTitle = userDbHelper.executeSQLQuery(sql);
if(cursorTitle.getCount()==0){
Log.i("Cursor Null","CURSOR TITLE NULL");
} else if(cursorTitle.getCount()>0){
cursorTitle.moveToFirst();
String text = cursorTitle.getString(cursorTitle.getColumnIndex("title"));
Log.i("title text","title text : "+text);
String[] names = new String[] { text };
listView.setAdapter(new MyArrayAdapter(this, names));
}
, mais quand je lance ce code, je n » En conséquence, j'obtiens quelque chose dans ma listview.
Donc, quelqu'un peut me suggérer comment puis-je définir le texte et l'image en imageview et textview dans mon activité en utilisant cet adaptateur.
Merci beaucoup!
des erreurs dans le logcat? le curseur est-il vide? avez-vous des données dans vos tables sqlite? vous définissez le texte en tant que "". cette image ne peut pas exister dans votre carte SD ... –
Je ne reçois aucune erreur dans mon Logcat, l'image est dans la carte SD, je n'ai pas de problème avec elle. J'ai des données dans mes tables, et le curseur n'est pas vide . –