【发布时间】:2018-07-26 10:01:31
【问题描述】:
我正在开发一个应用程序,该应用程序在列表视图中提供附近的餐馆,用户还可以将它们存储在最喜欢的列表中。 启动应用程序时,会加载附近的地方。我想检查附近是否有任何附近的地方在收藏中,如果有,那么它应该标记它的复选框(用于将地方标记为收藏的复选框)。 它应该根据其名称检查附近的地点是否已经在收藏列表中可用,如果存在,则应选中其收藏复选框。 提前致谢! :) 这是我的适配器代码:
public class RestaurantAdapter extends ArrayAdapter<PlaceDetailsClass>
{
Context context;
ArrayList<PlaceDetailsClass> placeDetailsClassArrayList;
ArrayList<PlaceDetailsClass> favouriteList;
private DatabaseHelper db;
public RestaurantAdapter(Context context, ArrayList<PlaceDetailsClass> placeDetailsClassArrayList)
{
super(context, R.layout.restaurant_list_item, placeDetailsClassArrayList);
this.context=context;
this.placeDetailsClassArrayList = placeDetailsClassArrayList;
db=new DatabaseHelper(context);
Log.w("ArrayList in resAdapter",placeDetailsClassArrayList.toString());
this.favouriteList = new ArrayList<>(db.getAllPlaces("restaurant"));
}
public static class Holder
{
TextView nameTv;
TextView vicinityTv;
CheckBox favourite;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
final PlaceDetailsClass data = getItem(position);
final Holder viewHolder;
if (convertView == null)
{
viewHolder = new Holder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.restaurant_list_item, parent, false);
viewHolder.nameTv = (TextView) convertView.findViewById(R.id.tv_restaurantname);
viewHolder.vicinityTv = (TextView) convertView.findViewById(R.id.tv_restaurantvicinity);
viewHolder.favourite = (CheckBox) convertView.findViewById(R.id.chkbx_favourite);
convertView.setTag(viewHolder);
}
else
{
viewHolder = (Holder) convertView.getTag();
}
viewHolder.favourite.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if(viewHolder.favourite.isChecked())
{
db.addToFavourites(context.getString(R.string.restaurant), data.getName(),data.getVicinity(),data.getRating(),data.getLatitude(),data.getLongitude(),1);
Toast.makeText(context,data.getName()+" "+context.getString(R.string.addToFav), Toast.LENGTH_SHORT).show();
}
else
{
db.removePlace(data.getName());
Toast.makeText(context, data.getName()+" "+context.getString(R.string.removeFromFav), Toast.LENGTH_SHORT).show();
}
}
});
viewHolder.nameTv.setText(data.getName());
viewHolder.vicinityTv.setText(data.getVicinity());
if(data.getFavourite()==1)
{
viewHolder.favourite.setChecked(true);
}
else
{
viewHolder.favourite.setChecked(false);
}
return convertView;
}
@Override
public int getViewTypeCount()
{
return getCount();
}
@Override
public int getItemViewType(int position)
{
return position;
}
@Override
public int getCount()
{
return placeDetailsClassArrayList.size();
}
@Override
public long getItemId(int position)
{
return position;
}
}
【问题讨论】:
标签: java android arraylist android-arrayadapter android-adapter