属性动画+多条目使用MVP

在这里插入图片描述

属性动画

MainActivity

private XRecyclerView xRecyclerView;
    private int mPage;
    private RecyclerAdapter adapter;
    private IPresenterImpl iPresenter;

private ImageView image_xin;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    xRecyclerView=findViewById(R.id.x_recycle);
    image_xin=findViewById(R.id.image_xin);


    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
    xRecyclerView.setLayoutManager(linearLayoutManager);
    mPage=1;
    iPresenter=new IPresenterImpl(this);
    adapter = new RecyclerAdapter(this);
    xRecyclerView.setAdapter(adapter);


    xRecyclerView.setPullRefreshEnabled(true);
    xRecyclerView.setLoadingMoreEnabled(true);

    adapter.setOnItemClickListener(new RecyclerAdapter.onItemClickListener() {
        @Override
        public void getPosition(int position) {
            adapter.delItem(position);
        }
    });
    xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
        @Override
        public void onRefresh() {
            mPage=1;
            loadData();
        }

        @Override
        public void onLoadMore() {
            loadData();
        }
    });
    loadData();
    image_xin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ObjectAnimator translationX = ObjectAnimator.ofFloat(image_xin, "translationX", 0, -480,0);
            ObjectAnimator translationY = ObjectAnimator.ofFloat(image_xin, "translationY", 0, 800, 0);
            ObjectAnimator alpha = ObjectAnimator.ofFloat(image_xin, "alpha", 1f, 0f, 1f);
            AnimatorSet animatorSet = new AnimatorSet();
            animatorSet.setDuration(5000);
            animatorSet.playTogether(translationX,translationY,alpha);
            animatorSet.start();

            animatorSet.addListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationStart(Animator animation) {

                }

                @Override
                public void onAnimationEnd(Animator animation) {
                    image_xin.setSelected(true);
                }

                @Override
                public void onAnimationCancel(Animator animation) {

                }

                @Override
                public void onAnimationRepeat(Animator animation) {

                }
            });

        }
    });
}

private void loadData() {
    iPresenter.startRequest(String.format(Apis.TYPE_TITLE,mPage+""),new HashMap<String, String>(),GoodsBean.class);
}

@Override
public void requestSuccess(Object data) {
    if(data instanceof GoodsBean){
        GoodsBean goodsBean= (GoodsBean) data;
        if(mPage==1){
            adapter.setList(goodsBean.getData());
        }else{
            adapter.addList(goodsBean.getData());
        }
        mPage++;
    }
    xRecyclerView.refreshComplete();
    xRecyclerView.loadMoreComplete();
}

适配器

 private List<GoodsBean.DataBean> list;
    private Context context;
    private final int ONEIMAGE=0;
    private final int THREEIMAGE=ONEIMAGE+1;

public RecyclerAdapter(Context context) {
    this.context = context;
    list=new ArrayList<>();
}

public void setList(List<GoodsBean.DataBean> list) {
    this.list.clear();
    if(list!=null){
        this.list.addAll(list);
    }
    notifyDataSetChanged();
}
public void addList(List<GoodsBean.DataBean> list) {
    if(list!=null){
        this.list.addAll(list);
    }
    notifyDataSetChanged();
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    RecyclerView.ViewHolder holder=null;
    if (i==ONEIMAGE){
        View view= LayoutInflater.from(context).inflate(R.layout.one_item,viewGroup,false);
        holder=new ViewHolderOneImage(view);
    }else {
        View view=LayoutInflater.from(context).inflate(R.layout.three_item,viewGroup,false);
        holder=new ViewHolderThreeImage(view);
    }
    return holder;
}

@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder viewHolder, final int i) {
    int itemViewType = getItemViewType(i);
    switch (itemViewType){
        case ONEIMAGE:
            final ViewHolderOneImage oneImage= (ViewHolderOneImage) viewHolder;
            oneImage.textView_title.setText(list.get(i).getTitle());
            Glide.with(context).load(list.get(i).getThumbnail_pic_s()).into(oneImage.imageView_pic_s);
            oneImage.textView_one_del.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    if(itemClickListener!=null){
                        itemClickListener.getPosition(i);

                    }
                }
            });
            break;
        case THREEIMAGE:
            final ViewHolderThreeImage threeImage= (ViewHolderThreeImage) viewHolder;
            threeImage.textView_title.setText(list.get(i).getTitle());
            Glide.with(context).load(list.get(i).getThumbnail_pic_s()).into(threeImage.imageView_pic_s);
            Glide.with(context).load(list.get(i).getThumbnail_pic_s02()).into(threeImage.imageView_pic_s2);
            Glide.with(context).load(list.get(i).getThumbnail_pic_s03()).into(threeImage.imageView_pic_s3);
            threeImage.textView_three_del.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    if(itemClickListener!=null){
                        itemClickListener.getPosition(i);
                    }
                }
            });
            break;
            default:
                break;
    }
}

@Override
public int getItemViewType(int position) {
    return list.get(position).hasImage()? ONEIMAGE : THREEIMAGE;
}

static class ViewHolderOneImage extends RecyclerView.ViewHolder {
    TextView textView_title,textView_one_del;

    ImageView imageView_pic_s;
    ConstraintLayout constraintLayout_one;
    public ViewHolderOneImage(@NonNull View itemView) {
        super(itemView);
        textView_title=itemView.findViewById(R.id.textView_one_title);
        imageView_pic_s=itemView.findViewById(R.id.imageView_one_pic_s);
        textView_one_del=itemView.findViewById(R.id.textView_one_del);
        constraintLayout_one=itemView.findViewById(R.id.content_one);
    }
}

static class ViewHolderThreeImage extends RecyclerView.ViewHolder {
    TextView textView_title,textView_three_del;
    ImageView imageView_pic_s,imageView_pic_s2,imageView_pic_s3;
    ConstraintLayout constraintLayout_three;
    public ViewHolderThreeImage(@NonNull View itemView) {
        super(itemView);
        textView_title=itemView.findViewById(R.id.textView_three_title);
        imageView_pic_s=itemView.findViewById(R.id.imageView_three_pic_s);
        imageView_pic_s2=itemView.findViewById(R.id.imageView_three_pic_s2);
        imageView_pic_s3=itemView.findViewById(R.id.imageView_three_pic_s3);
        textView_three_del=itemView.findViewById(R.id.textView_three_del);
        constraintLayout_three=itemView.findViewById(R.id.content_three);
    }
}

@Override
public int getItemCount() {
    return list.size();
}
//接口回调
public onItemClickListener itemClickListener;
public void setOnItemClickListener(onItemClickListener itemClick){
    itemClickListener=itemClick;
}
public interface onItemClickListener{
    void getPosition(int position);
}
//删除
public void delItem(int position){
    list.remove(position);
    notifyItemRemoved(position);
    notifyDataSetChanged();
}

MVP层详见

https://github.com/YangJun1208/week032/tree/master/zhoukaolianxi031

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值