public void addAll(ArrayList<String> list)
{
mModel.clear();
for(String s : list)
{
mModel.add(s);
}
notifyDataSetChanged();
}
@Override
public void showList(ArrayList<String> list)
{
((ListAdapter)mRecyclerView.getAdapter()).addAll(list);
}
Вью вообще не знает про презентер (у Вью даже ссылки на него быть не должно, не то, что данные требовать)
Презентер получает данные и зовёт метод setItems у Вью.
У MVPView должен быть метод showItems(List), который дергает презентер и в котором элементы просечиваются в адаптер.
public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHolder>
{
private ArrayList<Crime> mCrimes;
private final ListAdapterCallback mListener;
public ListAdapter(ListAdapterCallback listener)
{
mCrimes = CrimeLab.get().getCrimes();
mListener = listener;
}
public Crime getItem(int position)
{
return mCrimes.get(position);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item,parent,false);
return new ViewHolder(view, mListener);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
holder.mTitle.setText(mCrimes.get(position).getTitle());
holder.mDate.setText(mCrimes.get(position).getDate().toString());
holder.mSolved.setChecked(mCrimes.get(position).isSolved());
}
@Override
public int getItemCount()
{
return mCrimes.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
private final ListAdapterCallback mListener;
TextView mTitle;
TextView mDate;
CheckBox mSolved;
public ViewHolder(View itemView, ListAdapterCallback listener)
{
super(itemView);
mListener = listener;
this.itemView.setOnClickListener(this);
mTitle = itemView.findViewById(R.id.crime_item_title);
mDate = itemView.findViewById(R.id.crime_item_date);
mSolved = itemView.findViewById(R.id.crime_item_solved);
}
@Override
public void onClick(View v)
{
mListener.onItemClick(getAdapterPosition());
}
}
}