У меня есть таблица 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;
}
}
Вам нужно добавить кастом 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
Других решений пока нет …