2012-03-30 2 views
1

У меня есть Array для хранения значения из DB. Если я попытаюсь с некоторыми данными по умолчанию, он работает нормально, но если я получу значение из БД, он будет показывать только последнее значение.Java-for loop только повторяет последнее значение

Данные по умолчанию;

MenuList menu_data [] = new MenuList[]{}; 
menu_data = new MenuList[] 
{ 
new MenuList("test","test1") ,  
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") , 
new MenuList("test","test1") 
}; 

значение из БД,

MenuList menu_data [] = new MenuList[]{}; 
List<Menu> profiles = db.getAllContacts(); 
for (Menu cn : profiles) { 
menu_data = new MenuList[] 
{ 
new MenuList(cn.getmenuname(), cn.getmenuprice()) 
}; 
} 

Как я могу получить все значения из БД.

+0

вы пробовали 'menu_data = profiles.toArray()'? –

+0

в моих профилях У меня есть несколько значений, таких как меню, цена, Vege, Time, Date ... Я просто хочу показать меню и цену .... –

ответ

2

Попробуйте это:

List<MenuList> menulists = new ArrayList<MenuList>(); 
for (Menu cn : db.getAllContacts()) 
    menulists.add(new MenuList(cn.getmenuname(), cn.getmenuprice())); 
MenuList[] menu_data = menulists.toArray(new MenuList[0]); 
3

Каждый раз, когда вы проходите цикл, вы создаете новый массив. Следовательно, доступно только последнее значение. Пожалуйста, попробуйте следующее

menu_data = new MenuList[profiles.size()]; 

for (int i = 0; i < menu_data.length; i++) { 
    Menu cn = profiles.get(i); 
    menu_data[i] = new MenuList(cn.getmenuname(), cn.getmenuprice()); 
} 
+4

вам нужно объявить и инициализировать переменную 'i':' int i = 0 '; и в цикле: 'menu_data [i ++] = ...' –

+0

@LuiggiMendoza Пропустил это полностью! Спасибо –

+0

it throw java.lang.ArrayIndexOutOfBoundsException: length = 0; index = 0 –

2
List<Menu> profiles = db.getAllContacts(); 
int numProfiles = profiles.size(); 
MenuList[] menu_data = new MenuList[numProfiles]; 
for (int i = 0; i < numProfiles; i++) { 
    Menu cn = profiles.get(i); 
    menu_data[i] = new MenuList(cn.getmenuname(), cn.getmenuprice()); 
} 
+0

это бросать 2 ошибки .. 1-й. Невозможно определить выражения измерения при инициализации массива ..2nd java.lang.ArrayIndexOutOfBoundsException: length = 0; index = 0 –

+0

Извините, я хотел просто создать его вместо использования инициализатора. Исправлена. Если length = 0, то тело цикла 'for' не будет выполнено вообще. –

Смежные вопросы