public class ChannelActivity extends Activity {
public RecyclerView rv;
public List<DataBean> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_channel);
initData();
initView();
}
private void initView() {
rv = (RecyclerView) findViewById(R.id.rl_view);
rv.setLayoutManager(new GridLayoutManager(this, 4));
MyAdapter adapter = new MyAdapter(this, list);
rv.setAdapter(adapter);
//关联ItemTouchHelper
ItemTouchHelper touchHelper = new ItemTouchHelper(new MyItemTouchCallBack(adapter));
touchHelper.attachToRecyclerView(rv);
}
private void initData() {
DataBean bean1 = new DataBean("体育", 0, "url");
DataBean bean2 = new DataBean("新闻", 1, "url");
DataBean bean3 = new DataBean("影视", 2, "url");
DataBean bean4 = new DataBean("电视剧", 3, "url");
DataBean bean5 = new DataBean("热点", 4, "url");
DataBean bean6 = new DataBean("推荐", 5, "url");
DataBean bean7 = new DataBean("屌丝男士", 6, "url");
DataBean bean8 = new DataBean("音乐", 7, "url");
DataBean bean9 = new DataBean("电影", 8, "url");
list.add(bean1);
list.add(bean2);
list.add(bean3);
list.add(bean4);
list.add(bean5);
list.add(bean6);
list.add(bean7);
list.add(bean8);
list.add(bean9);
}
}
public class MyItemTouchCallBack extends ItemTouchHelper.Callback {
private TouchInterface touchInterface;
public MyItemTouchCallBack(TouchInterface touchInterface) {
this.touchInterface = touchInterface;
}
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
//拖拽
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.RIGHT | ItemTouchHelper.LEFT;
//滑出屏幕
int swipeFlags = ItemTouchHelper.RIGHT | ItemTouchHelper.LEFT | ItemTouchHelper.UP | ItemTouchHelper.DOWN;
return makeMovementFlags(dragFlags, 0);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
int position_target = target.getLayoutPosition();
int position = viewHolder.getLayoutPosition();
//滑动事件回调到了Adapter,用来处理数据
touchInterface.onMove(position, position_target);
return true;
}
//标签动画持续时间,默认是250
@Override
public long getAnimationDuration(RecyclerView recyclerView, int animationType, float animateDx, float animateDy) {
return super.getAnimationDuration(recyclerView, animationType, animateDx, animateDy);
}
/**
* 是否可以长按拖拽,默认是true
*
* @return
*/
@Override
public boolean isLongPressDragEnabled() {
return super.isLongPressDragEnabled();
}
/**
* 标签划出去的回调,direction是滑动的方向
*
* @return
*/
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
}
}
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> implements TouchInterface {
private Context context;
//是否显示delete
public boolean isShow;
public List<DataBean> getList() {
return list;
}
public void setList(List<DataBean> list) {
this.list = list;
}
private List<DataBean> list;
public MyAdapter(Context context, List<DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
MyViewHolder viewHolder = new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false));
return viewHolder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.tv_des.setText(list.get(position).name);
holder.tv_des.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DataBean bean = list.remove(position);
notifyDataSetChanged();
Toast.makeText(context,"删除了"+bean.name+"频道",Toast.LENGTH_SHORT).show();
}
});
holder.tv_des.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
isShow = true;
notifyDataSetChanged();
return true;
}
});
if (isShow) {
holder.iv_icon.setVisibility(View.VISIBLE);
} else {
holder.iv_icon.setVisibility(View.GONE);
}
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public void onMove(int currentPosition, int targetPosition) {
Collections.swap(list, currentPosition, targetPosition);
if (targetPosition < currentPosition) {
List<DataBean> subList = list.subList(targetPosition + 1, currentPosition + 1);
//向右移一位
rightStepList(0, subList);
} else {
List<DataBean> subList = list.subList(currentPosition, targetPosition);
//向左移一位
leftStepList(0, subList);
}
notifyItemMoved(currentPosition, targetPosition);
}
}
class MyViewHolder extends RecyclerView.ViewHolder {
public ImageView iv_icon;
public TextView tv_des;
public MyViewHolder(View itemView) {
super(itemView);
iv_icon = (ImageView) itemView.findViewById(R.id.iv_icon);
tv_des = (TextView) itemView.findViewById(R.id.tv_des);
}
}
public class DataUtils {
/**
* 利用反转的思想对数据进行排序
* 例如:list{0,1,2,3,4,5,6,7} 左移一位
* 第一步:第一位先反转{0,1,2,3,4,5,6,7}
* 第二部:剩下的在反转{0,7,6,5,4,3,2,1}
* 第三步:全部反转{1,2,3,4,5,6,7,0}
*
* 例如:list{0,1,2,3,4,5,6,7} 右移一位
* 第一步:最右边一位先反转{1,2,3,4,5,6,7}
* 第二部:剩下的在反转{6,5,4,3,2,1,0,7}
* 第三步:全部反转{7,6,5,4,3,2,1,0}
*
* 因为list的index是从0开始的,step要相应的-1
* 优点:少创建对象,优化内存
*
* @param start
* @param end
* @param list
*/
public static void reverseList(int start,int end,List list){
int count = (end+1-start)/2 ;
for(int i = 0;i< count;i++){
Object temp = list.get(start+i);
list.set(start+i,list.get(end-i));
list.set(end-i,temp);
}
}
public static void leftStepList(int step,List list){
int size = list.size() -1;
//左移
reverseList(0,step,list);
reverseList(step+1,size,list);
reverseList(0,size,list);
}
public static void rightStepList(int step,List list){
int size = list.size() -1;
//右移
reverseList(size-step,size,list);
reverseList(0,size-step-1,list);
reverseList(0,size,list);
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_channel"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.iwintrue.channe.ChannelActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/rl_view"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp">
<TextView
android:id="@+id/tv_des"
android:layout_width="80dp"
android:layout_height="30dp"
android:text="屌丝男士"
android:gravity="center"
android:background="@drawable/rl_shape"
android:textColor="@color/textColor"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp" />
<ImageView
android:layout_alignRight="@+id/tv_des"
android:layout_marginRight="-5dp"
android:id="@+id/iv_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@mipmap/delete"
android:scaleType="fitXY"
android:visibility="gone" />
</RelativeLayout>
</LinearLayout>
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有