#android
#Android
Вопрос:
я пытаюсь передать элементы массива, чтобы их можно было отображать в виде изображений, но сталкиваюсь с трудностями при его реализации. любая помощь.
класс sampleData.java
public static ArrayList<Data> generateSampleData() {
int sampleData[] = {
R.drawable.imageone,
R.drawable.imagetwo,
R.drawable.imagethree
};
String repeat = " repeat";
final ArrayList<Data> datas = new ArrayList<Data>();
for (int i = 0; i < SAMPLE_DATA_ITEM_COUNT; i ) {
Data data = new Data();
data.image = sampleData[0];
data.title = "Pinterest Card";
data.description = "Super awesome description";
Random ran = new Random();
int x = ran.nextInt(i SAMPLE_DATA_ITEM_COUNT);
for (int j = 0; j < x; j )
data.description = repeat;
datas.add(data);
}
return datas;
класс Data.java
public class Data {
public int image;
public String title;
public String description;
public Data() {}
}
вот ошибка, которую я получаю, если я меняю data.image = SampleData[0] на
data.image = SampleData[i]
06-19 11:51:02.814 1626-1626/com.richapps.true_gamer E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
at com.richapps.true_gamer.grid.SampleData.generateSampleData(SampleData.java:21)
at com.richapps.true_gamer.FindPeopleFragment.onCreateView(FindPeopleFragment.java:29)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:828)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032)
at android.app.BackStackRecord.run(BackStackRecord.java:622)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Комментарии:
1. С какими трудностями вы столкнулись? Ошибка sytax, исключение? Если вы можете сказать, нам будет легче помочь.
2. Что ты пытаешься реализовать, брат? Можете ли вы рассказать нам о своей идее?
3. этот код отображает только одно и то же изображение в виде сетки. я хочу по-разному отображать все изображения в массиве в gridview
Ответ №1:
Изменить
data.image = sampleData[0];
Для
data.image = sampleData[i];
Комментарии:
1. принудительно закрывается при запуске
2. Вероятно, это связано с чем-то другим в вашем коде. Пожалуйста, поделитесь своим отчетом о сбое.
Ответ №2:
у вас в скобках 0. Это означает, что вы печатаете одно и то же изображение в каждой строке. Измените его на букву вашего цикла, которая является «i»
data.image = sampleData[i];
Ответ №3:
получилось.
Изначально я установил SAMPLE_DATA_ITEM_COUNT=10, но когда я установил для него значение 4, оно сработало, потому что оно должно было соответствовать количеству элементов в массиве. Всем спасибо за помощь
Комментарии:
1.
SAMPLE_DATA_ITEM_COUNT
заменитьsampleData.length()
наfor loop's
условие in
Ответ №4:
Поскольку у вас sampleData[]
есть 3 элемента, а SAMPLE_DATA_ITEM_COUNT's
значение равно 10, когда вы пытаетесь получить доступ data.image = sampleData[i];
к полученному ArrayIndexOutOfBoundsException, i is greater than 2
измените это
for (int i = 0; i < SAMPLE_DATA_ITEM_COUNT; i ) {
Data data = new Data();
data.image = sampleData[0];
data.title = "Pinterest Card";
data.description = "Super awesome description";
Random ran = new Random();
int x = ran.nextInt(i SAMPLE_DATA_ITEM_COUNT);
for (int j = 0; j < x; j )
data.description = repeat;
datas.add(data);
}
Для
for (int i = 0; i < sampleData.length(); i ){
Data data = new Data();
data.image = sampleData[i];
data.title = "Pinterest Card";
data.description = "Super awesome description";
Random ran = new Random();
int x = ran.nextInt(i SAMPLE_DATA_ITEM_COUNT);
for (int j = 0; j < x; j )
data.description = repeat;
datas.add(data);
}