У меня есть действие, которое показывает 3 случайных изображения из данных JSON из Интернета.Каждое случайное изображение кликабельно и приводит к своей активности в деталях, содержит название, изображение, описание и т. Д. Показанные изображения отличаются друг от друга.
Мне нужно реализовать SQLite и Cursor
для этого действиятак что, когда нет подключения к интернету, приложение считывает данные изображения из кэша на внешнем хранилище.У меня уже есть классы базы данных, провайдера и синхронизации.У меня есть база данных SQLite со следующими столбцами:
BaseColumns._ID
Database.Project.C_SMALLIMAGE
Вот фрагменты кода, который у меня такfar:
void doSync() {
Intent serviceIntent = new Intent(this, LooserSync.class);
startService(serviceIntent);
}
Этот метод вызывает веб-сервис, в который я помещаю свой URL.Это изображение загружено:
public void setViewImage(ImageView v, String value) {
v.setTag(value);
loader.DisplayImage(value, context, v);
}
Это моя старая функция, которая рандомизирует изображения и делает их кликабельными:
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);
Это то, что я имею в своей деятельности до сих пор:
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);
}
}
Вот функция, которая извлекает детали изображения:
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");
Есть предложения о том, как создать код из этих фрагментов?