package net.qiujuer.tips.view.adapter;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import net.qiujuer.tips.R;
import net.qiujuer.tips.factory.model.adapter.ContactViewModel;
import net.qiujuer.tips.factory.presenter.ContactsPresenter;
import net.qiujuer.tips.factory.view.ContactsView;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class ContactsAdapter extends RecyclerView.Adapter<ContactsViewHolder>
implements ContactsView {
private List<ContactViewModel> mDataSet;
private AdapterSelectCallback mCallback;
private ContactsPresenter mPresenter;
private RecyclerView mRecycler;
private View mNullView;
public ContactsAdapter(RecyclerView view, View nullView, AdapterSelectCallback callback) {
mDataSet = new ArrayList<ContactViewModel>();
mRecycler = view;
mNullView = nullView;
mCallback = callback;
mPresenter = new ContactsPresenter(this);
//StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
LinearLayoutManager layoutManager = new LinearLayoutManager(view.getContext());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecycler.setLayoutManager(layoutManager);
mRecycler.setAdapter(this);
}
public void destroy() {
if (mPresenter != null) {
mPresenter.destroy();
mRecycler = null;
mNullView = null;
mCallback = null;
mPresenter = null;
mDataSet.clear();
}
}
public void refresh() {
if (mPresenter != null)
mPresenter.refresh();
}
@Override
public void setLoading(boolean isLoad) {
AdapterSelectCallback callback = mCallback;
if (callback != null) {
callback.setLoading(isLoad);
}
}
@Override
public ContactsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new view.
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_list_contacts_recycer, parent, false);
ContactsViewHolder holder = new ContactsViewHolder(v, viewType);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Object object = v.getTag();
if (object != null) {
mCallback.onItemSelected((UUID) object);
}
}
});
return holder;
}
@Override
public void onBindViewHolder(ContactsViewHolder holder, int position) {
holder.setData(mDataSet.get(position));
}
@Override
public int getItemViewType(int position) {
final int size = mDataSet.size() - 1;
if (size == 0)
return ItemType.ATOM;
else if (position == 0)
return ItemType.START;
else if (position == size)
return ItemType.END;
else return ItemType.NORMAL;
}
@Override
public int getItemCount() {
return mDataSet.size();
}
@Override
public List<ContactViewModel> getDataSet() {
return mDataSet;
}
@Override
public void setDataSet(List<ContactViewModel> dataSet) {
if (mDataSet != dataSet) {
mDataSet.clear();
if (dataSet != null)
this.mDataSet.addAll(dataSet);
}
}
@Override
public void setNull(boolean isNull) {
if (mRecycler != null && mNullView != null) {
if (isNull) {
mRecycler.setVisibility(View.INVISIBLE);
mNullView.setVisibility(View.VISIBLE);
} else {
mNullView.setVisibility(View.INVISIBLE);
mRecycler.setVisibility(View.VISIBLE);
}
}
}
}