Адаптер для списка ListView.

В этом посте создаем новый класс, который будет адаптером для  нашего списка блюд.

Адаптер (англ. adapter, от лат. adapto — приспособляю) — приспособление, устройство или деталь, предназначенные для соединения устройств, не имеющих иного совместимого способа соединения.

Как это понять?


С помощью данного адаптера мы создадим возможность добавления в ListView элементов с собственной разметкой, все наши блюда (элементы) будут содержаться в ArrayList.

Вот код нашего нового адаптера:

// импорты
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


// класс DishAdapter

public class DishAdapter extends BaseAdapter {
private LayoutInflater mLayoutInflater;
private ArrayList<Dish> list;

public DishAdapter (Context ctx,ArrayList<Dish> lst) {
mLayoutInflater = LayoutInflater.from(ctx);
list = lst;
}

public int getCount () {
return list.size();
}

public Object getItem (int position) {
return position;
}

public long getItemId (int position) {
return position;
}

public Dish getString (int position) {
return (Dish) list.get(position);
}

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null)
  convertView = mLayoutInflater.inflate(R.layout.dishitem, null);

//  R.layout.dishitem  - это наш xml файл, теперь мы можем обратиться
// к каждому его элементу по id и задать значение.

ImageView icon = (ImageView)convertView.findViewById(R.id.Image);
// id ImageView
icon.setImageResource(((Dish) list.get(position)).getIcon());
// получаем картинку блюда,
//используя метод getIcon(), который мы определили в классе Dish
// и так далее соответственно в разметку подставляются конкретные характеристики блюда 
TextView title = (TextView)convertView.findViewById(R.id.Title);
title.setText(((Dish) list.get(position)).getInfo());  
//название блюда

TextView shortDescription = (TextView)convertView.findViewById(R.id.ShortDescription);
shortDescription.setText(((Dish) list.get(position)).getshortDescription());
// краткое описание

TextView mass = (TextView)convertView.findViewById(R.id.Mass);
String massa =(((Dish) list.get(position)).getMass());  
//масса
mass.setText("\tВес:"+"\r"+massa+"\t");

TextView price = (TextView)convertView.findViewById(R.id.Price);
String pric = Double.toString(((Dish) list.get(position)).getPrice()); 

//цена (конвертируется в тип String из типа Double)
price.setText("\tЦена:"+"\r"+pric+"р."+"\t");

return convertView;

// на выходе получаем полноценный элемент списка блюд, то есть конкретное блюдо со
//своими характеристиками, расположенными в соответствии с разметкой xml. 
}
}


Комментариев нет:

Отправить комментарий