Jestem zainteresowany tworzeniem ogólnego BaseAdaptera, który będzie miał zastosowanie do dowolnego ListView posiadającego dowolną list_item. I ustawi item_row dla widoku listy.Utwórz ogólną kartę bazową?
public class GenericAdapter extends BaseAdapter
{
Context context;
ArrayList<HashMap<String, String>> list;
LayoutInflater inflater;
public GenericAdapter (Context context, ArrayList<HashMap<String, String>> list)
{
this.context = context;
this.list = list;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount()
{
return list.size();
}
@Override
public Object getItem(int position)
{
return list.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
if(view == null)
{
view = inflater.inflate(R.layout.item_of_any_list, parent, false);
// i have to do something here like there may be a method which must be call
}
/*HashMap<String, String> map = list.get(position);
TextView textViewName = (TextView) view.findViewById(R.id.name);
TextView textViewDate = (TextView) view.findViewById(R.id.date);
//TextView textViewDesc = (TextView) view.findViewById(R.id.desc);
textViewName.setText(map.get("name"));
textViewDate.setText(map.get("date"));
//textViewDesc.setText(map.get("description"));
*/
return view;
}
Myślę, że muszę stworzyć interfejs, który pobiera i ustawia item_row dla pojedynczego przedmiotu. Ale nie wiem, czy to możliwe. Czy ktoś może mi powiedzieć, jak mogę to osiągnąć?
Mój pomysł polega na stworzeniu interfejsu, a GenericAdapter zaimplementuje ten interfejs. W tym interfejsie istnieje metoda pobierania i ustawiania item_row. Każda klasa, która rozszerza GenericAdapter, musi implementować tę metodę. to pomoże nam stworzyć ogólny adapter.
Po rozszerzeniu tego adaptera nie musimy pisać całego kodu, takiego jak getCount, getItem, getItemId, musimy po prostu zastąpić funkcję, która ma na celu nadmuchanieLayout. które muszą być wewnątrz getView
Dzięki z góry
Jeśli nie chcesz pisać własnych adapterów, należy rozważyć użycie istniejąca biblioteka, taka jak https://github.com/ribot/easy-adapter lub http://amigold.github.io/FunDapter/ – CommonsWare
Zobacz [Generic Adapter] (https://github.com/sa jadshokri/Core-Adapter) – FarshidABZ