public
class
PublicDataAdapter
extends
BaseAdapter {
private
static
class
ViewHolder {
TextView titleTxt;
TextView contentTxt;
CheckBox favouriteCheck;
}
interface
Listener {
void
onAddFavourite(PublicDataItem item);
}
private
final
List<PublicDataItem> items =
new
ArrayList<>();
private
Listener listener;
public
void
submitList(List<PublicDataItem> items) {
this
.items.clear();
this
.items.addAll(items);
notifyDataSetChanged();
}
public
void
setListener(Listener listener) {
this
.listener = listener;
}
@Override
public
int
getCount() {
return
items.size();
}
@Override
public
PublicDataItem getItem(
int
position) {
return
items.get(position);
}
@Override
public
long
getItemId(
int
position) {
return
items.get(position).hashCode();
}
@Override
public
View getView(
int
position, View convertView, ViewGroup parent) {
if
(convertView ==
null
) {
convertView = createHolderView(parent);
}
final
PublicDataItem item = items.get(position);
bindViewHolder(convertView, item);
return
convertView;
}
private
void
bindViewHolder(View convertView, PublicDataItem item) {
final
ViewHolder holder = (ViewHolder) convertView.getTag();
holder.titleTxt.setText(item.getServNm());
holder.contentTxt.setText(item.getServDgst());
holder.favouriteCheck.setChecked(item.isChecked());
holder.favouriteCheck.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
if
(listener !=
null
) listener.onAddFavourite(item);
}
});
}
private
View createHolderView(ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View itemView = inflater.inflate(R.layout.item_public_data, parent,
false
);
ViewHolder holder =
new
ViewHolder();
holder.titleTxt = itemView.findViewById(R.id.titleTxt);
holder.contentTxt = itemView.findViewById(R.id.contentTxt);
holder.favouriteCheck = itemView.findViewById(R.id.favouriteCheck);
itemView.setTag(holder);
return
itemView;
}
}