//所用到的依赖和jar包 依赖XListView
compile ‘com.android.support:appcompat-v7:25.3.1’
compile ‘com.android.support.constraint:constraint-layout:1.0.2’
testCompile ‘junit:junit:4.12’
compile ‘org.xutils:xutils:3.5.0’
compile ‘com.android.support:design:25.3.1’
compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’
compile project(‘:XListView-master’)
compile files(‘libs/gson-2.7.jar’)
compile 'com.android.support:recyclerview-v7:25.2.0'
-------------------MainActivity
package com.baway.wuxiaofang.monthexam.view.activity;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.baway.wuxiaofang.monthexam.R;
import com.baway.wuxiaofang.monthexam.model.bean.Info;
import com.baway.wuxiaofang.monthexam.view.adapter.MyViewpagerAdapter;
import com.baway.wuxiaofang.monthexam.view.fragment.MyFragment;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private AlertDialog.Builder dialog;
private TabLayout tablayout;
private ViewPager viewpager;
private MyViewpagerAdapter adapter;
private Info info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setViewpagerAdapter();
getDataFrom();
}
private void setViewpagerAdapter() {
adapter = new MyViewpagerAdapter(getSupportFragmentManager(), this);
viewpager.setAdapter(adapter);
}
private void initView() {
tablayout = (TabLayout) findViewById(R.id.tablayout);
viewpager = (ViewPager) findViewById(R.id.viewpager);
}
private void getDataFrom() {
ArrayList<String> strings = new ArrayList<>();
ArrayList<Fragment> fragList = new ArrayList<>();
for (int i = 0; i < 8; i++) {
strings.add("星期"+(i+1));
MyFragment myFragment = new MyFragment();
fragList.add(myFragment);
}
adapter.setList(strings,fragList);
adapter.notifyDataSetChanged();
tablayout.setupWithViewPager(viewpager);
}
}
———————ChnnelActivity
package com.baway.wuxiaofang.monthexam.view.activity;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.baway.wuxiaofang.monthexam.R;
import com.baway.wuxiaofang.monthexam.view.adapter.MyTouchAdapter;
import com.baway.wuxiaofang.monthexam.view.iview.MyCallback;
import java.lang.reflect.Type;
import java.util.ArrayList;
/**
* Created by lenovo on 2017/5/31.
*/
public class ChnnelActivity extends AppCompatActivity {
private RecyclerView myRv;
private RecyclerView otRv;
private ArrayList<String> list;
private ArrayList<String> myList;
private ArrayList<String> otList;
private MyAdapter myAdapter;
private MyAdapter otAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.channel);
initView();
setAdapter();
getDataFromAdapter();
}
private void getDataFromAdapter() {
list = getIntent().getStringArrayListExtra("list");
myList = new ArrayList<>();
otList = new ArrayList<>();
for (int i = 0; i < list.size() / 2; i++) {
myList.add(list.get(i));
}
for (int i = list.size() / 2; i < list.size(); i++) {
otList.add(list.get(i));
}
myAdapter.setList(myList);
otAdapter.setList(otList);
myAdapter.notifyDataSetChanged();
otAdapter.notifyDataSetChanged();
}
private void setAdapter() {
myAdapter = new MyAdapter(0);
otAdapter = new MyAdapter(1);
myRv.setAdapter(myAdapter);
otRv.setAdapter(otAdapter);
MyCallback myCallback = new MyCallback(myAdapter);
ItemTouchHelper touchHelper = new ItemTouchHelper(myCallback);
touchHelper.attachToRecyclerView(myRv);
MyCallback otCallback = new MyCallback(otAdapter);
ItemTouchHelper touchHelper2 = new ItemTouchHelper(otCallback);
touchHelper2.attachToRecyclerView(otRv);
}
private void initView() {
myRv = (RecyclerView) findViewById(R.id.mtRv);
otRv = (RecyclerView) findViewById(R.id.otRv);
myRv.setLayoutManager(new GridLayoutManager(this, 4));
otRv.setLayoutManager(new GridLayoutManager(this, 4));
}
class MyAdapter extends RecyclerView.Adapter implements MyTouchAdapter {
ArrayList<String> strList = new ArrayList<>();
int type;
public MyAdapter(int type) {
this.type = type;
}
public void setList(ArrayList<String> datas) {
if (datas != null) {
strList.addAll(datas);
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
MyHolder myHolder = new MyHolder(View.inflate(ChnnelActivity.this, R.layout.ahannel_item, null));
return myHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
MyHolder holder1 = (MyHolder) holder;
holder1.tv.setText(strList.get(position));
holder1.tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (type == 0) {
String instance = myAdapter.getInstance(position);
myAdapter.removeItem(position);
otAdapter.addItem(instance);
} else if (type == 1) {
String instance = otAdapter.getInstance(position);
myAdapter.addItem(instance);
otAdapter.removeItem(position);
}
}
});
}
@Override
public int getItemCount() {
return strList.size();
}
public String getInstance(int position) {
return strList.get(position);
}
public void removeItem(int position) {
strList.remove(position);
notifyDataSetChanged();
}
public void addItem(String item) {
strList.add(item);
notifyDataSetChanged();
}
@Override
public void onItemMove(RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) {
if (type == 0) {
int fromPosition = source.getAdapterPosition();
int toPosition = target.getAdapterPosition();
// Toast.makeText(MainActivity.this, “fromPosition>>” + fromPosition + “>>toPosition>>” + toPosition, Toast.LENGTH_LONG).show();
if (toPosition == 0 || toPosition == 1) {
return;
} else {
if (fromPosition < list.size() && toPosition < list.size()) {
//交换数据位置
// Collections.swap(mData, fromPosition, toPosition);
String itemBean = list.get(fromPosition);
list.remove(fromPosition);
list.add(toPosition, itemBean);
//刷新位置交换
notifyItemMoved(fromPosition, toPosition);
}
}
//移动过程中移除view的放大效果
onItemClear(source);
}
}
@Override
public void onItemDissmiss(RecyclerView.ViewHolder source) {
if (type == 0) {
int position = source.getAdapterPosition();
list.remove(position); //移除数据
notifyItemRemoved(position);//刷新数据移除
}
}
@Override
public void onItemSelect(RecyclerView.ViewHolder source) {
if (type == 0) {
//当拖拽选中时放大选中的view
int position = source.getAdapterPosition();
source.itemView.setScaleX(1.2f);
source.itemView.setScaleY(1.2f);
}
}
@Override
public void onItemClear(RecyclerView.ViewHolder source) {
if (type == 0) {
source.itemView.setScaleX(1.0f);
source.itemView.setScaleY(1.0f);
}
}
}
class MyHolder extends RecyclerView.ViewHolder {
private final TextView tv;
public MyHolder(View itemView) {
super(itemView);
tv = (TextView) itemView.findViewById(R.id.text);
}
}
}
———————————-adapter
package com.baway.wuxiaofang.monthexam.view.adapter;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
/**
* Created by lenovo on 2017/5/30.
*/
public class MyViewpagerAdapter extends FragmentPagerAdapter {
Context context;
ArrayList strList = new ArrayList<>();
ArrayList fragmentList = new ArrayList<>();
public MyViewpagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.context = context;
}
public void setList(ArrayList<String> strDatas, ArrayList<Fragment> fragDatas) {
if (strDatas != null && fragDatas != null) {
strList.addAll(strDatas);
fragmentList.addAll(fragDatas);
}
}
public MyViewpagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return strList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return strList.get(position);
}
}
package com.baway.wuxiaofang.monthexam.view.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.baway.wuxiaofang.monthexam.R;
import com.baway.wuxiaofang.monthexam.model.bean.Info;
import com.baway.wuxiaofang.monthexam.view.activity.ChnnelActivity;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.sql.Array;
import java.util.ArrayList;
import java.util.List;
/**
* Created by lenovo on 2017/5/30.
*/
public class XlvAdapter extends BaseAdapter {
Context context;
List
}
package com.baway.wuxiaofang.monthexam.view.iview;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import com.baway.wuxiaofang.monthexam.view.adapter.MyTouchAdapter;
/**
* Created by lenovo on 2017/5/31.
*/
public class MyCallback extends ItemTouchHelper.Callback {
private MyTouchAdapter adapter;
public MyCallback(MyTouchAdapter adapter) {
this.adapter = adapter;
}
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int i = makeMovementFlags(ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT,
ItemTouchHelper.RIGHT);
return i;
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
adapter.onItemMove(viewHolder, target);
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
}
@Override
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
super.onSelectedChanged(viewHolder, actionState);
if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {
//当滑动或者拖拽view的时候通过接口返回该ViewHolder
adapter.onItemSelect(viewHolder);
}
}
@Override
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
super.clearView(recyclerView, viewHolder);
if (!recyclerView.isComputingLayout()) {
//当需要清除之前在onSelectedChanged或者onChildDraw,onChildDrawOver设置的状态或者动画时通过接口返回该ViewHolder
adapter.onItemClear(viewHolder);
}
}
}
————————————接口
package com.baway.wuxiaofang.monthexam.view.iview;
/**
* Created by lenovo on 2017/5/30.
*/
public interface Iview {
void getData(String data);
}
package com.baway.wuxiaofang.monthexam.view.adapter;
import android.support.v7.widget.RecyclerView;
/**
* Created by lenovo on 2017/5/31.
*/
public interface MyTouchAdapter{
//数据交换
void onItemMove(RecyclerView.ViewHolder source, RecyclerView.ViewHolder target);
//数据删除
void onItemDissmiss(RecyclerView.ViewHolder source);
//drag或者swipe选中
void onItemSelect(RecyclerView.ViewHolder source);
//状态清除
void onItemClear(RecyclerView.ViewHolder source);
}
————————–MainPresenter
package com.baway.wuxiaofang.monthexam.presenter;
import com.baway.wuxiaofang.monthexam.model.utils.HttpUtils;
import com.baway.wuxiaofang.monthexam.view.iview.Iview;
/**
* Created by lenovo on 2017/5/30.
*/
public class MainPresenter {
public void getData(final Iview iview){
String path=”http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9”;
HttpUtils.getdData(path, new HttpUtils.dataCallBack() {
@Override
public void getData(String data) {
iview.getData(data);
}
});
}
}
——————————–HttpUtils
package com.baway.wuxiaofang.monthexam.model.utils;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;
/**
* Created by lenovo on 2017/5/30.
*/
public class HttpUtils {
public static void getdData(String path, final dataCallBack datacallback) {
RequestParams requestParams = new RequestParams();
requestParams.setUri(path);
x.http().get(requestParams, new Callback.CommonCallback() {
@Override
public void onSuccess(String result) {
System.out.println(“——–”+result);
datacallback.getData(result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
public interface dataCallBack {
void getData(String data);
}
}
package com.baway.wuxiaofang.monthexam.model.utils;
import android.content.Context;
import android.icu.util.ULocale;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
* Created by lenovo on 2017/5/30.
*/
public class IsNetUtils {
public static boolean isNet(Context context) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo();
if (activeNetworkInfo != null) {
return activeNetworkInfo.isAvailable();
} else {
return false;
}
}
}
—————————Application
package com.baway.wuxiaofang.monthexam.app;
import android.app.Application;
import android.os.Environment;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
import org.xutils.BuildConfig;
import org.xutils.x;
import java.io.File;
/**
* Created by lenovo on 2017/5/30.
*/
public class Myapp extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(BuildConfig.DEBUG);
ImageLoaderConfiguration configuration =
new ImageLoaderConfiguration.Builder(this)
.diskCacheSize(50 * 1024 * 1024)
.memoryCacheSize(2 * 1024 * 1024)
.diskCache(new UnlimitedDiskCache(new File(
Environment.getExternalStorageDirectory().getPath())))
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
.denyCacheImageMultipleSizesInMemory()
.imageDecoder(new BaseImageDecoder(true))
.writeDebugLogs()
.threadPriority(Thread.NORM_PRIORITY)
.build();
ImageLoader.getInstance().init(configuration);
}
}
——————————–bean包