use of com.shiqkuangsan.mycustomviews.bean.ImgAndText in project CustomViews by AndroidStudy233.
the class RecyclerViewActivity method fillContentView.
private void fillContentView() {
View view = View.inflate(this, R.layout.layout_recycler_main, null);
// 初始化SwipeRefreshLayout
swipe_main = (SwipeRefreshLayout) view.findViewById(R.id.swipe_recycler_main);
swipe_main.setColorSchemeResources(R.color.swipe_schema_red, swipe_schema_blue, R.color.swipe_schema_green);
swipe_main.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
MyApplication.getHandler().postDelayed(new Runnable() {
@Override
public void run() {
showToast("刷新成功~");
swipe_main.setRefreshing(false);
}
}, 1500);
}
});
// 初始化RecyclerView
recycler_main = (RecyclerView) view.findViewById(R.id.recycler_recycler_main);
// 设置布局管理者,采用线性布局管理者,竖直排列,不用反转(反转就是数据反序)
recycler_main.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
adapter = new SimpleRecyclerAdapter(this, new SimpleRecyclerAdapter.OnItemClickListener() {
@Override
public void onClick(int position, ImgAndText bean) {
/*
这里有个要注意的地方就是,在adapter中设置侦听的时候你要是用onBindViewHolder方法中的参数position
那么remove之后会position错乱BUG.这是RecyclerView的一个大坑...要用holder.getAdapterPosition传递
*/
System.arraycopy(hits, 1, hits, 0, hits.length - 1);
hits[hits.length - 1] = SystemClock.uptimeMillis();
if (hits[0] >= SystemClock.uptimeMillis() - 500) {
MyLogUtil.debug("position: " + position);
adapter.removeItem(position);
} else {
ToastUtil.toastShort(RecyclerViewActivity.this, "点击了图片");
}
}
});
// 设置拖拽监听, 首先定义一个callback定义拖拽功能, callback中定义listener与adapter传递事件
// 然后将callback传给helper, 并由helper绑定recycle
ItemTouchHelper.Callback callback = new OnRecyclerItemTouchCallBack(adapter);
ItemTouchHelper helper = new ItemTouchHelper(callback);
helper.attachToRecyclerView(recycler_main);
/*
细节注意, 上述方式是通过长按条目来实现拖拽, 比如条目右边有个图标, 希望按住图标实现拖拽呢?
adapter的holder中设置图标触摸事件setOnTouchListener. 这就需要在onTouch方法中调用上面helper的
onStartDrag方法, 怎么调用呢? adapter定义一个接口OnIconDragHandler. 里边定义
onHandleDrag(RecyclerView.ViewHolder viewHolder); 然后通过构造传进来.
这样再让当前activity实现接口, 调用helper的onStartDrag方法. 然后new adapter的时候传过去.
最后具体一下图标的ouTouch方法
如果按下
if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN){
回调RecyclerViewActivity中的onHandleDrag方法
让mItemTouchHelper执行拖拽操作
handler.startDrag(holder);
}
*/
// recycler_main.setAdapter(adapter);
// 使用第三方库中简单的动画来设置适配器,其对象可以setDuration、setInterpolator,甚至可以继续传入形成装饰者
// recycler_main.setAdapter(new ScaleInAnimationAdapter(adapter));
recycler_main.setAdapter(new SlideInLeftAnimationAdapter(adapter));
/*
这里有个非常重要的问题,如果你想使用增删动画,那么在增删操作的时候
你就不能使用notifyDataSetChanged,不然动画不会执行的,需要使用notifyItemRemoved(posi)、notifyItemInserted(posi)
*/
// 设置条目动画,增删的时候会用到
SlideInLeftAnimator animator = new SlideInLeftAnimator();
animator.setInterpolator(new OvershootInterpolator());
recycler_main.setItemAnimator(animator);
// 将填充好的View放到主页面上
frame_main.addView(view);
}
use of com.shiqkuangsan.mycustomviews.bean.ImgAndText in project CustomViews by AndroidStudy233.
the class SimpleRecyclerAdapter method initData.
private void initData() {
for (int i = 0; i < 30; i++) {
ImgAndText bean = new ImgAndText();
bean.imgName = "测试图片 " + i;
switch(i % 6) {
case 0:
bean.imgUrl = Constant.imgurl_800x470_1;
break;
case 1:
bean.imgUrl = Constant.imgurl_800x470_2;
break;
case 2:
bean.imgUrl = Constant.imgurl_1366x768_1;
break;
case 3:
bean.imgUrl = Constant.imgurl_1366x768_2;
break;
case 4:
bean.imgUrl = Constant.imgurl_1920x1080_1;
break;
case 5:
bean.imgUrl = Constant.imgurl_1920x1080_2;
break;
}
list.add(bean);
}
}
use of com.shiqkuangsan.mycustomviews.bean.ImgAndText in project CustomViews by AndroidStudy233.
the class SimpleRecyclerAdapter method addItem.
/**
* 通过notifyItemInserted()添加一条数据
*
* @param imgName 图片描述
* @param imgUrl 图片资源地址
* @param position 位置
*/
public void addItem(String imgName, String imgUrl, int position) {
ImgAndText bean = new ImgAndText();
bean.imgUrl = imgUrl;
bean.imgName = imgName;
list.add(position, bean);
notifyItemInserted(position);
}
use of com.shiqkuangsan.mycustomviews.bean.ImgAndText in project CustomViews by AndroidStudy233.
the class SimpleRecyclerAdapter method onBindViewHolder.
// 设置数据
@Override
public void onBindViewHolder(final SimpleRecyclerViewHolder holder, final int position) {
final ImgAndText bean = list.get(position);
MySimplexUtil.loadImage(holder.iv_card_img, bean.imgUrl, MySimplexUtil.getSimpleImageOptions(8), null);
holder.tv_card_text.setText(bean.imgName);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null)
listener.onClick(holder.getAdapterPosition(), bean);
}
});
}
Aggregations