package com.jaydenxiao.androidfire.ui.news.activity; import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.GridLayoutManager; 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.View; import com.jaydenxiao.androidfire.R; import com.jaydenxiao.androidfire.app.AppConstant; import com.jaydenxiao.androidfire.bean.NewsChannelTable; import com.jaydenxiao.androidfire.ui.news.adapter.ChannelAdapter; import com.jaydenxiao.androidfire.ui.news.contract.NewsChannelContract; import com.jaydenxiao.androidfire.ui.news.event.ChannelItemMoveEvent; import com.jaydenxiao.androidfire.ui.news.model.NewsChannelModel; import com.jaydenxiao.androidfire.ui.news.presenter.NewsChanelPresenter; import com.jaydenxiao.androidfire.widget.ItemDragHelperCallback; import com.jaydenxiao.common.base.BaseActivity; import java.util.ArrayList; import java.util.List; import butterknife.Bind; import rx.functions.Action1; /** * des:选择关注频道 * Created by xsf * on 2016.09.11:51 */ public class NewsChannelActivity extends BaseActivity<NewsChanelPresenter, NewsChannelModel>implements NewsChannelContract.View{ @Bind(R.id.toolbar) Toolbar toolbar; @Bind(R.id.news_channel_mine_rv) RecyclerView newsChannelMineRv; @Bind(R.id.news_channel_more_rv) RecyclerView newsChannelMoreRv; private ChannelAdapter channelAdapterMine; private ChannelAdapter channelAdapterMore; @Override public int getLayoutId() { return R.layout.act_news_channel; } /** * 入口 * @param context */ public static void startAction(Context context){ Intent intent = new Intent(context, NewsChannelActivity.class); context.startActivity(intent); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mRxManager.on(AppConstant.CHANNEL_SWAP, new Action1<ChannelItemMoveEvent>() { @Override public void call(ChannelItemMoveEvent channelItemMoveEvent) { if (channelItemMoveEvent!=null) { mPresenter.onItemSwap((ArrayList<NewsChannelTable>) channelAdapterMine.getAll(),channelItemMoveEvent.getFromPosition(),channelItemMoveEvent.getToPosition()); } } }); } @Override public void initPresenter() { mPresenter.setVM(this, mModel); } @Override public void initView() { toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { finishAfterTransition(); } else { finish(); } } }); mPresenter.lodeChannelsRequest(); } @Override public void returnMineNewsChannels(List<NewsChannelTable> newsChannelsMine) { channelAdapterMine = new ChannelAdapter(mContext,R.layout.item_news_channel); newsChannelMineRv.setLayoutManager(new GridLayoutManager(this, 4, LinearLayoutManager.VERTICAL, false)); newsChannelMineRv.setItemAnimator(new DefaultItemAnimator()); newsChannelMineRv.setAdapter(channelAdapterMine); channelAdapterMine.replaceAll(newsChannelsMine); channelAdapterMine.setOnItemClickListener(new ChannelAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { NewsChannelTable newsChannel = channelAdapterMine.get(position); channelAdapterMore.add(newsChannel); channelAdapterMine.removeAt(position); mPresenter.onItemAddOrRemove((ArrayList<NewsChannelTable>) channelAdapterMine.getAll(), (ArrayList<NewsChannelTable>)channelAdapterMore.getAll()); } }); ItemDragHelperCallback itemDragHelperCallback = new ItemDragHelperCallback(channelAdapterMine); ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemDragHelperCallback); itemTouchHelper.attachToRecyclerView(newsChannelMineRv); channelAdapterMine.setItemDragHelperCallback(itemDragHelperCallback); } @Override public void returnMoreNewsChannels(List<NewsChannelTable> newsChannelsMore) { channelAdapterMore = new ChannelAdapter(mContext,R.layout.item_news_channel); newsChannelMoreRv.setLayoutManager(new GridLayoutManager(this, 4, LinearLayoutManager.VERTICAL, false)); newsChannelMoreRv.setItemAnimator(new DefaultItemAnimator()); newsChannelMoreRv.setAdapter(channelAdapterMore); channelAdapterMore.replaceAll(newsChannelsMore); channelAdapterMore.setOnItemClickListener(new ChannelAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { NewsChannelTable newsChannel = channelAdapterMore.get(position); channelAdapterMine.add(newsChannel); channelAdapterMore.removeAt(position); mPresenter.onItemAddOrRemove((ArrayList<NewsChannelTable>) channelAdapterMine.getAll(), (ArrayList<NewsChannelTable>)channelAdapterMore.getAll()); } }); } @Override public void showLoading(String title) { } @Override public void stopLoading() { } @Override public void showErrorTip(String msg) { } }