自定义属性说明
| 属性 | 说明 |
| — | — |
| mvAnimDuration | 动画执行时间 |
| mvInterval | View 翻页时间间隔 |
| mvGravity | View 的摆放位置left、center、right |
| mvDirection | 动画滚动方向:bottom_to_top、top_to_bottom、right_to_left、left_to_right |
第三步:给 MarqueeView 设置 Adapater
首先,若 MarqueeView 的 ViewType 只有一种类型,那么只需要继承 CommonAdapter 即可
public class SimpleTextAdapter extends CommonAdapter {
public SimpleTextAdapter(Context context, List datas) {
super(context, R.layout.item_simple_text, datas);
}
@Override
protected void convert(ViewHolder viewHolder, String item, int position) {
TextView tv = viewHolder.getView(R.id.tv);
tv.setText(item);
}
}
SimpleTextAdapter simpleTextAdapter = new SimpleTextAdapter(mContext, datas);
simpleTextAdapter.setOnItemClickListener(new MultiItemTypeAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position, View view) {
Log.i(TAG, "onItemClick: position = " + position);
if (marqueeView.isStart()) {
marqueeView.stopFilp();
} else {
marqueeView.startFlip();
}
}
});
marqueeView.setAdapter(simpleTextAdapter);
看一下效果图:
支持不同的 ViewType
从 gif 效果图中,我们可以看到,一共有三种 type:
-
只含有 TextView
-
含有一个 ImageView 和 TextView
-
含有两个 TextView 和 一个ImageView
要想实现上述效果,需要两个步骤:
第一步:继承于 ItemViewDelegate,重写 getItemViewLayoutId,isForViewType,convert
方法,其中 getItemViewLayoutId 方法表示返回布局 layoutId,convert 方法在刷新当前 View 的时候会调用,可以用来刷新数据
/**
- Created by xujun on 1/9/2018$ 18:25$.
*/
public class TextItemViewDelegate implements ItemViewDelegate {
@Override
public int getItemViewLayoutId() {
return R.l