J'ai une activité qui montre 3 images aléatoires de données JSON sur le Web. Chaque image aléatoire est cliquable et conduit à son activité de détails, portant son titre, son image, sa description, etc. Les images montrées sont distinctes les unes des autres.Problèmes implémentant SQLite et Cursor dans une activité
J'ai besoin d'implémenter SQLite et un Cursor
à cette activité afin que chaque fois qu'il n'y a pas de connexion Internet, l'application lit les données d'image du cache sur le stockage externe. J'ai déjà les classes de la base de données, fournisseur et synchronisation. J'ai une base de données SQLite avec les colonnes suivantes:
BaseColumns._ID
Database.Project.C_SMALLIMAGE
Voici les extraits de code que j'ai jusqu'à présent:
void doSync() {
Intent serviceIntent = new Intent(this, LooserSync.class);
startService(serviceIntent);
}
Cette méthode appelle la Service Web où je mets mon URL. Ceci est l'image est chargée:
public void setViewImage(ImageView v, String value) {
v.setTag(value);
loader.DisplayImage(value, context, v);
}
Ceci est mon ancienne fonction qui randomise les images et les rend cliquables:
prjcts = new ArrayList<Project>();
int max = prjcts.size();
System.out.println(max);
List<Integer> indices = new ArrayList<Integer>(max);
for(int c = 1; c < max; ++c) {
indices.add(c);
}
Random r = new Random();
int arrIndex = r.nextInt(indices.size());
int randomIndex1 = indices.get(arrIndex);
indices.remove(arrIndex);
C'est ce que j'ai dans mon activité jusqu'à présent:
int arrIndex2 = r.nextInt(indices.size());
int randomIndex2 = indices.get(arrIndex2);
indices.remove(arrIndex2);
int arrIndex3 = r.nextInt(indices.size());
int randomIndex3 = indices.get(arrIndex3);
indices.remove(arrIndex3);
imageLazy(image1, prjcts.get(randomIndex1),Main.this);
imageLazy(image2, prjcts.get(randomIndex2),Main.this);
imageLazy(image3, prjcts.get(randomIndex3),Main.this);
image1.setOnClickListener(new RandomClickListener(randomIndex1));
image2.setOnClickListener(new RandomClickListener(randomIndex2));
image3.setOnClickListener(new RandomClickListener(randomIndex3));
public void imageLazy(final ImageView image,Project pro,Activity activity) {
String imageurl = pro.smallImageUrl;
image.setTag(imageurl);
loader.DisplayImage(imageurl, activity,image);
}
public class RandomClickListener implements View.OnClickListener {
private final int randomIndex;
public RandomClickListener(final int randomIndex) {
this.randomIndex = randomIndex;
}
@Override
public void onClick(View v) {
Intent top = new Intent(Main.this, DetailsActivity.class);
top.putExtra("spendino.de.ProjectDetail.position", randomIndex);
/*
top.setData(Uri.withAppendedPath(Uri.withAppendedPath(
LooserProvider.CONTENT_URI, Database.Project.NAME), Long.toString(id)));
*/
startActivity(top);
}
}
Voici une fonction qui récupère les détails de l'image:
Uri uri = Uri.withAppendedPath(Uri.withAppendedPath(LooserProvider.CONTENT_URI, Database.Project.NAME), Long .toString(id));
Cursor managedCursor = managedQuery(uri, new String[] { BaseColumns._ID, Database.Project.C_BIGIMAGE }, null, null, "RANDOM() LIMIT 3");
Des suggestions sur la façon de générer le code à partir de ces extraits?
alors j'ai essayé quelque chose, vous pouvez rechercher ma question mise à jour ... qu'est-ce que j'ai besoin de plus? – hectichavana
Merci, je vais essayer. Je n'utilise pas listview parce que je dois l'afficher pas comme une liste, j'ai seulement besoin d'afficher 3 images et il doit être horizontal – hectichavana
en utilisant l'EDIT2 est en fait une idée intelligente, et maintenant j'essaie de comprendre comment la liste La vue pourrait être horizontale. Et le plus important, quand je clique sur la liste au hasard, il devrait me conduire à son détails détails, pas les détails basés sur la position d'entrée sur le json – hectichavana