Android Сортировка данных в массивы — ArrayAdapter JSON Listview

У меня есть таблица MySQL под названием продукты, которые содержат информацию о диете. В настоящее время я запускаю скрипт php, который вызывает следующую команду sql Select * from Food, где dietid = 1, которая возвращает изображение ниже.

введите описание изображения здесь

День столбца — это день диеты, поэтому день 1, день 2 и т. Д. Время относится к точке в течение дня, поэтому время 1 — время завтрака 2 — время закуски 3 — время обеда 4 — послеобеденная закуска и время 5 — обед ,

Я хотел бы отображать данные следующим образом в виде списка для каждого дня диеты. Описание представляет собой количественную меру и элемент

введите описание изображения здесь

У меня есть следующий вывод в log-cat на данный момент.

Используя подход Jims, я смог сгруппировать эти данные по дням и времени в нужном мне формате, однако теперь я сталкиваюсь с проблемой, с которой сталкивался раньше, список раздувается, и он помещает информацию в каждую строку, когда мне это нужно. все быть в 1 ряду за 1 день.

введите описание изображения здесь

Проблема в том, что теперь он раздувает подобные представления, которые создают одно представление и вставляют его для каждого элемента.

введите описание изображения здесь

введите описание изображения здесь

Я хотел бы сгруппировать эти данные в массивы для каждого дня, чтобы это был день 1 — завтрак, закуска и т. Д., Чтобы я мог поместить все это в один список для просмотра пользователем.

Все мои данные хранятся в 2 модельных классах. Ниже мой адаптер с моделями классов.

Спасибо 🙂 добраться туда ..

public class DietAdapterNew extends ArrayAdapter<FoodInfoModel>{

private List<FoodInfoModel> items;private TextView diet_day, breakfast_data, snach1_data, lunch_data, snack2_data, dinner_data ;private LinearLayout ratingCntr;
private TextView followersText;public DietAdapterNew(Context context, List<FoodInfoModel> items) {
super(context, R.layout.list_diet_single_day);this.items = items;

}public int getCount() {
return items.size();
}@SuppressWarnings("unchecked")
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;

if(v == null) {
LayoutInflater li = LayoutInflater.from(getContext());
v = li.inflate(R.layout.list_diet_single_day, null);
}

FoodInfoModel infomodel = items.get(position);if(infomodel != null) {diet_day = (TextView)v.findViewById(R.id.diet_day);
breakfast_data = (TextView)v.findViewById(R.id.breakfast_data);
snach1_data  = (TextView)v.findViewById(R.id.snack1_data);
lunch_data = (TextView)v.findViewById(R.id.lunch_data);
snack2_data = (TextView)v.findViewById(R.id.snack2_data);
dinner_data =  (TextView)v.findViewById(R.id.dinner_data);List<DayFoodModel> daylist = new ArrayList<DayFoodModel>();

DayFoodModel dayfoodmodel = new DayFoodModel();
dayfoodmodel.setDay(infomodel.getDay());
dayfoodmodel.setTime(infomodel.getTime());
dayfoodmodel.setFoodData(infomodel.getItem() + infomodel.getMeasure());

diet_day.setText("Current day "  );Collections.sort(daylist, new DayComparator());
daylist.add(dayfoodmodel);Log.v("Logging", "Info" +  daylist);//      };if (dayfoodmodel.getTime() == 1 ) {

if( breakfast_data != null)  breakfast_data.setText(dayfoodmodel.getFoodData());

}

if (dayfoodmodel.getTime() == 2) {

if( snach1_data != null)  snach1_data.setText(dayfoodmodel.getFoodData());

}

if (dayfoodmodel.getTime() == 3) {

if( lunch_data != null)  lunch_data.setText(dayfoodmodel.getFoodData());

}

if (dayfoodmodel.getTime() == 4) {

if( snack2_data != null)  snack2_data.setText(dayfoodmodel.getFoodData());

}

if (dayfoodmodel.getTime() == 5) {

if( dinner_data != null)  dinner_data.setText(dayfoodmodel.getFoodData());

}//}//   }

return v;
}
}
public class DayFoodModel {

int _day;
int _qty;
int _time;
String _item;
String _measure;
String _food_data;public DayFoodModel()
{

}public DayFoodModel(int day, int qty, int time,  String item, String measure, String food_data){this._day = day;
this._qty = qty;
this._item = item;
this._time = time;
this._measure = measure;
this._food_data = food_data;}

public DayFoodModel(String item, String measure, String food_data)

{
this._item = item;
this._measure = measure;
this._food_data = food_data;

}public int getDay(){
return this._day;
}

public void setDay(int day){
this._day = day;

}

public int getQty(){
return this._qty;
}

public void setQty(int qty){
this._qty = qty;

}

public int getTime(){
return this._time;
}

public void setTime(int time){
this._time = time;

}

public String getItem(){
return this._item;
}

public void setItem(String item){
this._item = item;
}

public String getMeasure(){
return this._measure;
}

public void setMeasure(String measure){
this._measure = measure;
}

public String getFoodData(){
return this._food_data;
}

public void setFoodData(String food_data){
this._food_data = food_data;
}}
public class FoodInfoModel
{

int _dietid;
int _id;
int _day;
int _qty;
int _time;
String _item;
String _measure;
public String breakfast_data_string;public FoodInfoModel()
{

}public FoodInfoModel(int dietid, int id, int day, int qty, int time,  String item, String measure){

this._id = id;
this._dietid = dietid;
this._day = day;
this._qty = qty;
this._item = item;
this._measure = measure;

this.breakfast_data_string = measure + item;}

public FoodInfoModel(String item, String measure, String breakfast_data_string)

{
this._item = item;
this._measure = measure;
this.breakfast_data_string = measure + item;

}public int getID(){
return this._id;
}

public void setID(int id){
this._id = id;

}

public int getDietID(){
return this._dietid;
}

public void setDietID(int dietid){
this._dietid = dietid;

}

public int getDay(){
return this._day;
}

public void setDay(int day){
this._day = day;

}

public int getQty(){
return this._qty;
}

public void setQty(int qty){
this._qty = qty;

}

public int getTime(){
return this._time;
}

public void setTime(int time){
this._time = time;

}

public String getItem(){
return this._item;
}

public void setItem(String item){
this._item = item;
}

public String getMeasure(){
return this._measure;
}

public void setMeasure(String measure){
this._measure = measure;
}

public String getBreakfastData(){
return this.breakfast_data_string;
}

public void setBreakfastData(String breakfast_data_string){
this.breakfast_data_string = breakfast_data_string;
}
}

0

Решение

Вам нужно добавить кастом Comparator к вашему объекту, то вы можете использовать Arrays.sort метод сортировки, какой вы хотите.

Вот одна ссылка о том, как сделать и использовать Comparator:

http://examples.javacodegeeks.com/core-java/util/comparator/java-comparator-example/

РЕДАКТИРОВАТЬ:

Помимо сортировки, вы, вероятно, должны использовать Adapter против существующего набора данных. Другими словами, эти строки в вашем Adapter не должно существовать:

        Collections.sort(daylist, new DayComparator());
daylist.add(dayfoodmodel);

Сначала вы сортируете — затем добавление данных. Все ваши данные должны быть в массиве, а затем сортировать его.

Во-вторых, вы должны передать все данные в Adapter так должна происходить сортировка до ты сделаешь getView в Adapter

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]