recycler列表展示 搜索框 自定义流式布局

M层接口

public interface MInterface {
    public void getRequest(String url, Map<String,String> map);
    public void postrequest(String url, String phone, String pwd);
}

P层接口

public interface PInterface {
    public void toshow(String findtext, int page);
}

V层接口

public interface VInterface {
    public void showList(Object o);
}

M层

public class MyModel implements MInterface {
MyCallBack myCallBack;

    Handler handler=new Handler(){
        @Override
        public void dispatchMessage(Message msg) {
            super.dispatchMessage(msg);
            int type=msg.arg1;
            if (type==1){
            }
            if (type==2){
                String json=  (String) msg.obj;
                Gson gson=new Gson();
                JsonBean jsonBean = gson.fromJson(json, JsonBean.class);
                Log.e("aa",json+jsonBean);
                myCallBack.success(jsonBean);
            }
        }
    };

    @Override
    public void getRequest(String url, Map<String,String> map) {
        OkHttpUtils utils = OkHttpUtils.getInstance();
        utils.doGet(url, map, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String json = response.body().string();
                Message message = new Message();

                message.obj=json;
                message.arg1=2;
                handler.sendMessage(message);
            }
        });
    }

    @Override
    public void postrequest(String url, String phone, String pwd) {
        OkHttpUtils utile = OkHttpUtils.getInstance();
        utile.doPost(url, phone, pwd, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String json = response.body().string();
                Message message = new Message();
                message.obj = json;
                handler.sendMessage(message);
            }
        });
    }

    public void setMyCallBack(MyCallBack myCallBack){
        this.myCallBack=myCallBack;
    }
    //避免同出现类型转化异常
    /*public void setMyCallBack(int type,MyCallBack myCallBack){
        if (type==1){
            this.myCallBack1=myCallBack;
        }else {
            this.myCallBack2=myCallBack;
        }
    }*/
    public interface MyCallBack{
        public void success(Object suc);
    }

}

P层

public class MyPresenter implements PInterface {

    MyModel myModel;
    VInterface vInterface;



    public MyPresenter(VInterface vInterface) {
        myModel = new MyModel();
        this.vInterface = vInterface;
    }

    @Override
    public void toshow(String findtext, int page) {
        Map<String,String> map = new HashMap<>();
        map.put("keyword", findtext);
        map.put("page", page+"");
        map.put("count", "10");

        myModel.setMyCallBack(new MyModel.MyCallBack() {
            @Override
            public void success(Object suc) {
                JsonBean jsonBean= (JsonBean) suc;
                List<JsonBean.ResultBean> list = jsonBean.getResult();
                vInterface.showList(list);
            }

            @Override
            public void error(Object err) {

            }
        });
        myModel.getRequest(URL.FIND_URL,map);
    }
}

V层

public class Main3Activity extends AppCompatActivity implements VInterface, XRecyclerView.LoadingListener {

    public View3 view3_id;
    public View2 view2_id;
    public List<JsonBean.ResultBean> list= new ArrayList<>();
    public XRecyclerView xrecycler;
    public PInterface pInterface;
    public TextView find;
    public EditText find_text;
    public String findtext;
    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        init();
    }

    private void init() {

        view3_id = findViewById(R.id.view3_id);
        view2_id = findViewById(R.id.view2_id);

        find =findViewById(R.id.find_id);
        find_text =findViewById(R.id.find_text_id);

        xrecycler = findViewById(R.id.xrecycler_id);
        xrecycler.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        xrecycler.setLoadingMoreEnabled(true);
        xrecycler.setPullRefreshEnabled(true);
        xrecycler.setLoadingListener(this);
//瀑布流
        StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        xrecycler.setLayoutManager(staggeredGridLayoutManager);

        pInterface = new MyPresenter(this);
        pInterface.toshow("高",1);

        myAdapter = new MyAdapter(list, Main3Activity.this);
        xrecycler.setAdapter(myAdapter);

        pInterface = new MyPresenter(this);
        pInterface.toshow("高",1);

        find.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                final TextView textView;
                findtext = find_text.getText().toString();
                textView = new TextView(Main3Activity.this);
                textView.setTag(findtext);
                textView.setText(findtext);

                pInterface.toshow(findtext, 1);

                textView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        String s = textView.getTag().toString();
                        find_text.setText(s);
//                        Log.e("tag" ,"点击的内容 = " + textView.getTag().toString());

                    }
                });

                textView.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        return false;
                    }
                });
                view3_id.addView(textView);
                view3_id.requestLayout();
                find_text.setFocusableInTouchMode(false);
                find_text.clearFocus();
            }
        });
    }
    @Override
    public void showList(Object o) {
        list.clear();
        xrecycler.refreshComplete();
        xrecycler.loadMoreComplete();
        List<JsonBean.ResultBean> list= (List<JsonBean.ResultBean>) o;
        this.list.addAll(list);
        myAdapter.notifyDataSetChanged();
    }
    @Override
    public void onRefresh() {
        list.clear();
        pInterface.toshow("高",1);
    }
        int page=1;
    @Override
    public void onLoadMore() {
        page++;
        pInterface.toshow(findtext,page);
    }
}

V层引导页(属性动画)

public class MainActivity extends AppCompatActivity {

    private View1 view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        view = findViewById(R.id.view1_id);

        ObjectAnimator translationX = ObjectAnimator.ofFloat(view, "translationX", 0, 200);
        ObjectAnimator translationY = ObjectAnimator.ofFloat(view, "translationY", 0, 500);
        ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 1,0,1,0,1,0,1,0,1);


        AnimatorSet animatorSet=new AnimatorSet();
        animatorSet.play(translationX).with(translationY).with(alpha);
        animatorSet.setDuration(3000);
        animatorSet.start();

        translationX.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                Intent intent=new Intent(MainActivity.this,Main3Activity.class);
                startActivity(intent);
                finish();
            }
        });



        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,Main3Activity.class);
                startActivity(intent);
            }
        });
    }
}

展示列表适配器

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Hold> {
    List<JsonBean.ResultBean> list;
    Context context;

    public MyAdapter(List<JsonBean.ResultBean> list, Context context) {
            this.list=list;
            this.context=context;
    }

    @NonNull
    @Override
    public Hold onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(context).inflate(R.layout.item, null);

        return new Hold(view);
    }

    @Override
    public void onBindViewHolder(@NonNull Hold holder, int position) {
        String title = list.get(position).getCommodityName();
        String price = list.get(position).getMasterPic();
        holder.text_id.setText(title);
        //圆形图片
        RoundedCorners roundedCorners= new RoundedCorners(100);
        Glide.with(context).load(price).apply(RequestOptions.bitmapTransform(roundedCorners)).into(holder.image_id);
    }

    @Override
    public int getItemCount() {
        if (list!=null){
            return list.size();
        }
        return 0;
    }

    public class Hold extends RecyclerView.ViewHolder{

        public ImageView image_id;
        public TextView text_id;

        public Hold(View itemView) {
            super(itemView);
            image_id = itemView.findViewById(R.id.image_id);
            text_id = itemView.findViewById(R.id.text_id);
        }
    }
}

自定义View继承View画圆
//为调试代码 可忽略

public class View1 extends View {

    ValueAnimator valueAnimator;
    Paint paint;
    private String vtext;
    private float vsize;
    private int vcolor;
    boolean  isgoing=true;
int i=0;
    int x=0;
    private int w;

    public View1(Context context) {

        super(context);
    }

    public View1(Context context, AttributeSet attrs) {

        super(context, attrs);
        /*TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.View1);
        vsize = typedArray.getDimension(R.styleable.View1_vsize, 30f);
        vtext = typedArray.getString(R.styleable.View1_vtext);
        vcolor = typedArray.getColor(R.styleable.View1_vcolor, 0xFF0000);
        typedArray.recycle();
        paint = new Paint();
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(vcolor);
        paint.setTextSize(50f);
*/


        paint = new Paint();
        paint.setColor(Color.RED);
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        paint.setAntiAlias(true);

    }

    public View1(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//        w = getMeasuredWidth();

    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawCircle(100, 100, 100, paint);

//        canvas.drawText(vtext,x,x,paint);
//        if (x<500){
//            starAnimation();
//        }
    }

    private void starAnimation(){

        /*valueAnimator = ValueAnimator.ofInt(0, w);
//        isgoing=false;
//        valueAnimator.setDuration(5000);
//        valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
//        valueAnimator.setInterpolator(new LinearInterpolator());
        x+=2;
        postInvalidate();

//        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
//            @Override
//            public void onAnimationUpdate(ValueAnimator animation) {
//                x= (int)animation.getAnimatedValue();
//                    Log.e("aaa",x+"");
//                postInvalidate();
//            }
//        });
        valueAnimator.start();*/
    }
}
public class View2 extends LinearLayout {


    public EditText find_text;
    public ImageView back;
    public Main3Activity activity;
    public View view;

    public View2(Context context) {
        super(context);
    }

    public View2(final Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);

        activity = (Main3Activity) context;
        view = LayoutInflater.from(context).inflate(R.layout.hand, this);


        back = view.findViewById(R.id.back_id);
        find_text = view.findViewById(R.id.find_text_id);


        find_text.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                find_text.setFocusableInTouchMode(true);
            }
        });
        find_text.setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus){
                    activity.view3_id.setVisibility(VISIBLE);
                }else {
                    activity.view3_id.setVisibility(GONE);
                }
            }
        });



    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值