package com.llf.common.ui.mine; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.support.v7.widget.helper.ItemTouchHelper; import android.view.MotionEvent; import android.view.View; import com.llf.basemodel.base.BaseActivity; import com.llf.basemodel.commonactivity.WebViewActivity; import com.llf.basemodel.commonwidget.EmptyLayout; import com.llf.basemodel.recycleview.DefaultItemDecoration; import com.llf.common.R; import com.llf.common.entity.JcodeEntity; import com.llf.common.ui.girl.adapter.GirlAdapter; import com.llf.common.ui.mine.contact.TrackContract; import com.llf.common.ui.mine.presenter.TrackPresenter; import java.util.ArrayList; import java.util.List; import butterknife.Bind; import butterknife.OnClick; /** * Created by llf on 2017/3/31. * 影迹 */ public class TrackActivity extends BaseActivity implements SwipeRefreshLayout.OnRefreshListener, TrackContract.View { @Bind(R.id.toolbar) Toolbar mToolbar; @Bind(R.id.recyclerView) RecyclerView mRecyclerView; @Bind(R.id.refreshLayout) SwipeRefreshLayout mRefreshLayout; @Bind(R.id.emptyLayout) EmptyLayout mEmptyLayout; private GirlAdapter mAdapter; private List<JcodeEntity> jcodes = new ArrayList<>(); private ItemTouchHelper mItemTouchHelper; private TrackPresenter mPresenter; private int position; private static final String HOST = "http://www.jcodecraeer.com"; private boolean mIsRefreshing = false; @Override protected int getLayoutId() { return R.layout.activity_track; } @Override protected void initView() { mPresenter = new TrackPresenter(this); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); mItemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT) { @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { int fromPosition = viewHolder.getAdapterPosition(); int toPosition = target.getAdapterPosition(); jcodes.add(toPosition, jcodes.remove(fromPosition)); mAdapter.notifyItemMoved(fromPosition, toPosition); return false; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { position = viewHolder.getAdapterPosition(); mPresenter.deleteData(TrackActivity.this, jcodes.get(position).getTitle()); } }); mItemTouchHelper.attachToRecyclerView(mRecyclerView); mRefreshLayout.setColorSchemeResources(R.color.colorPrimary, android.R.color.holo_red_light, android.R.color.holo_orange_light, android.R.color.holo_green_light); mRefreshLayout.setOnRefreshListener(this); LinearLayoutManager manager = new LinearLayoutManager(TrackActivity.this); manager.setOrientation(LinearLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(manager); mRecyclerView.setHasFixedSize(true); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); mRecyclerView.addItemDecoration(new DefaultItemDecoration(TrackActivity.this)); mAdapter = new GirlAdapter(jcodes, this); mAdapter.setOnItemClickLitener(new GirlAdapter.OnItemClickListener() { @Override public void onItemClick(int position) { WebViewActivity.lanuch(TrackActivity.this, HOST + jcodes.get(position).getDetailUrl()); } }); mRecyclerView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (mIsRefreshing) { return true; } else { return false; } } }); mRecyclerView.setAdapter(mAdapter); mRefreshLayout.setRefreshing(true); mPresenter.loadData(this); } @OnClick(R.id.floatBtn) public void onViewClicked() { mRecyclerView.smoothScrollToPosition(0); } @Override public void onRefresh() { mIsRefreshing = true; jcodes.clear(); mPresenter.loadData(this); } @Override public void showLoading() { startProgressDialog(); } @Override public void stopLoading() { stopProgressDialog(); } @Override public void showErrorTip(String msg) { showErrorHint(msg); mRefreshLayout.setRefreshing(false); } @Override public void returnData(List<JcodeEntity> datas) { if (datas.size() == 0) { mEmptyLayout.showEmpty(); } mRefreshLayout.setRefreshing(false); mIsRefreshing = false; jcodes.addAll(datas); mAdapter.notifyDataSetChanged(); } @Override public void retureResult(boolean result) { if (result) { jcodes.remove(position); mAdapter.notifyItemRemoved(position); } } }