MVP+OK+Xrecyclerview

Screenshot_2026-11-03-16-23-09-34.jpg 立即下载

用到的依赖

implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.android.support:recyclerview-v7:28.0.0-alpha3'
implementation('com.jcodecraeer:xrecyclerview:1.5.9') {
    exclude group: 'com.android.support'
}
implementation files('libs/universal-image-loader-1.9.5.jar')

封装OK

public class OK {

    private static OK ok;

    private static OkHttpClient client;

    private static Handler handler;

    protected static Handler getHandler() {
        return handler;
    }

    private OK() {
        client = new OkHttpClient.Builder()
                //TODO 拦截器,打印日志
                .build();

        handler = new Handler();
    }

    /**
     * 获得单例
     *
     * @return
     */
    public static OK getOk() {
        if (ok == null) {
            synchronized (OK.class) {
                if (ok == null) {
                    ok = new OK();
                }
            }
        }
        return ok;
    }

    /**
     * GET方法
     */
    public void doGet(String url, Callback callback) {
        //组装请求
        Request request = new Request.Builder()
                .url(url)
                .build();

        //初始化调用类
        Call call = client.newCall(request);

        //加入请求队列,回调结果
        call.enqueue(callback);

    }

    /**
     * POST方法
     */
    public void doPost() {

    }

}

封装的OkCallback

public abstract class OkCallback implements Callback{

    public abstract void onUI(String json);//更新UI
    public abstract void onFailed(String json);//返回错误信息

    @Override
    public void onFailure(Call call,final IOException e) {
        OK.getHandler().post(new Runnable() {
            @Override
            public void run() {
                onFailed(e.getMessage());
            }
        });
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        final String json=response.body().string();//注意
        OK.getHandler().post(new Runnable() {
            @Override
            public void run() {
                onUI(json);
            }
        });

    }
}

1.Model

    1》bean类

public class Shop {


        public double bargainPrice;
        public String createtime;
        public String detailUrl;
        public String images;
        public int itemtype;
        public int pid;
        public String price;
        public int pscid;
        public int salenum;
        public int sellerid;
        public String subhead;
        public String title;

}

2》Data类

public class ShopData {
    public int stutas;
    public String message;
    public List<Shop> data;
}

3》ITask类接口 (定义请求数据接口)

public interface ITask {
    public void getShopList(String url, OkCallback callback);
 

}

4》Task实现ITask方法

public class Task implements ITask{
    @Override
    public void getShopList(String url, OkCallback callback) {
        OK.getOk().doGet(url,callback);
    }
}

2。Presenter层

1》基类

public interface BasePre {
    void onDestroy();
}

2》p层的接口

public interface IPresenter extends BasePre{
    public void getData(String key,int page);
}

3》创建P层类实现P层的接口

public class MyPresenter implements IPresenter {
    ITask task;
    IView view;

    public MyPresenter(SecondActivity activity){
        task=new Task();
        view=activity;
    }

    @Override
    public void getData(String key,int page) {
        //拼接字符串
        String keyword = URLEncoder.encode(key);//记得中文编码
        String url = "http://www.zhaoapi.cn/product/searchProducts?keywords=" + keyword + "&page=" + page + "&sort=0";

        task.getShopList(url, new OkCallback() {
            @Override
            public void onUI(String json) {
                Gson gson=new Gson();
                ShopData shopData = gson.fromJson(json, ShopData.class);
                view.showData(shopData.data);
            }

            @Override
            public void onFailed(String json) {

            }
        });
    }


    @Override
    public void onDestroy() {
        //销毁视图
        view=null;
    }

}

3.View层

1》

public interface IView  {
    void showData(List<Shop> shops);
}

2》适配器

public class ShopAdapter extends RecyclerView.Adapter<ShopAdapter.ShopHolder> {
    private Context context;
    private List<Shop> list;
    private OnItemClickListener onItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

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


    public void clearData(){
        this.list.clear();
    }

    @NonNull
    @Override
    public ShopHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view= LayoutInflater.from(context).inflate(R.layout.layout_recycler,viewGroup,false);
        return new ShopHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ShopHolder shopHolder, int i) {
        final Shop shop=list.get(i);
        String imgUrl= shop.images.split("\\|")[0];
        ImageLoader.getInstance().displayImage(imgUrl,shopHolder.shop_img, App.getOptions());
        shopHolder.shop_name.setText(shop.title);
        shopHolder.shop_price.setText(shop.price+"");
        shopHolder.shop_createtime.setText(shop.createtime);
        shopHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (onItemClickListener!=null){
                    onItemClickListener.ItemClickListener(shop);
                }
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public void addData(List<Shop> shops) {
        this.list.addAll(shops);
        notifyDataSetChanged();
    }

    class ShopHolder extends RecyclerView.ViewHolder{
        ImageView shop_img;
        TextView shop_name,shop_price,shop_createtime;
         public ShopHolder(@NonNull View itemView) {
             super(itemView);
             shop_img=itemView.findViewById(R.id.shop_img);
             shop_name=itemView.findViewById(R.id.shop_name);
             shop_price=itemView.findViewById(R.id.shop_price);
             shop_createtime=itemView.findViewById(R.id.shop_createtime);
         }
     }

     public interface OnItemClickListener{
        void ItemClickListener(Shop shop);
     }
}

4.xml

主的xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SecondActivity">

    <ImageView
        android:id="@+id/image_fan"
        android:layout_width="40dp"
        android:layout_height="35dp"
        android:src="@drawable/fanhui"
        android:layout_marginTop="8dp"
        />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="330dp"
        android:layout_height="30dp"
        android:layout_alignTop="@+id/image_fan"
        android:layout_toEndOf="@+id/image_fan"
        android:background="@drawable/shape"
        android:hint="     搜索" />

    <ImageView
        android:id="@+id/image2"
        android:layout_width="35dp"
        android:layout_height="35dp"
        android:layout_alignLeft="@+id/editText2"
        android:layout_alignTop="@+id/editText2"
        android:layout_alignBottom="@+id/editText2"
        android:src="@drawable/sousuo" />

    <ImageView
        android:id="@+id/image_que"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentEnd="true"
        android:layout_marginTop="4dp"
        android:src="@drawable/qiehuan" />
    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/xrecyclerview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/editText2"
        android:layout_marginTop="5dp"
        ></com.jcodecraeer.xrecyclerview.XRecyclerView>
</RelativeLayout>

展示条目的xml

<ImageView
    android:id="@+id/shop_img"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginStart="12dp"
    android:layout_marginTop="11dp"
    android:src="@drawable/ic_launcher_background" />

<TextView
    android:id="@+id/shop_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_alignTop="@+id/shop_img"
    android:layout_marginStart="123dp"
    android:hint="2"
    android:text="TextView"
    android:textColor="#000"
    android:textSize="18dp" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/shop_createtime"
    android:layout_alignStart="@+id/shop_name"
    android:text="¥:"
    android:textColor="#FF0000"
    android:textSize="18dp" />

<TextView
    android:id="@+id/shop_price"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/textView2"
    android:layout_centerHorizontal="true"
    android:text="TextView"
    android:textColor="#FF0000"
    android:textSize="18dp" />

<TextView
    android:id="@+id/shop_createtime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/shop_img"
    android:layout_alignStart="@+id/shop_name"
    android:text="TextView" />

5.activity

public class SecondActivity extends AppCompatActivity implements IView{
    IPresenter presenter;
    XRecyclerView xRecyclerView;
    ShopAdapter shopAdapter;
    private int page=0;
    private String key;
    EditText editText2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        xRecyclerView=findViewById(R.id.xrecyclerview);
        editText2=findViewById(R.id.editText2);

        //获取传值
        key = getIntent().getStringExtra("key");
        editText2.setText(key);

        //初始化presenter
        presenter=new MyPresenter(this);
        presenter.getData(key,page);


        xRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        xRecyclerView.addItemDecoration(new DividerItemDecoration(this, OrientationHelper.VERTICAL));
        shopAdapter=new ShopAdapter(this);
        xRecyclerView.setAdapter(shopAdapter);

        shopAdapter.setOnItemClickListener(new ShopAdapter.OnItemClickListener() {
            @Override
            public void ItemClickListener(Shop shop) {
                Intent it=new Intent(SecondActivity.this,InfoActivity.class);
                it.putExtra("pid",shop.pid);
                it.putExtra("title",shop.title);
                it.putExtra("price",shop.price);
                it.putExtra("img",shop.images);
                startActivity(it);
            }
        });

        xRecyclerView.setPullRefreshEnabled(true);
        xRecyclerView.setLoadingMoreEnabled(true);
        xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                page = 1;
                shopAdapter.clearData();
                presenter.getData(key,page);
            }

            @Override
            public void onLoadMore() {
                page++;
                presenter.getData(key,page);
            }
        });
    }

    @Override
    public void showData(List<Shop> shops) {
        shopAdapter.addData(shops);

        xRecyclerView.loadMoreComplete();
        xRecyclerView.refreshComplete();
    }

    @Override
    public void showCart(List<Seller> sellers) {

    }
}

6.点击条目跳到详情页面

依赖

implementation 'com.youth.banner:banner:1.4.10'  //最新版本
//导入Glide版本记得使用此版本
implementation 'com.github.bumptech.glide:glide:3.8.0'

1.xml

<com.youth.banner.Banner
    android:layout_margin="8dp"
    android:id="@+id/banner"
    android:layout_width="match_parent"
    android:layout_height="300dp"></com.youth.banner.Banner>

<TextView
    android:id="@+id/text_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="210dp"
    android:layout_marginStart="15dp"
    android:text="TextView"
    android:textColor="#000"
    android:textSize="20dp"
    tools:layout_editor_absoluteX="29dp"
    tools:layout_editor_absoluteY="284dp" />

<Button
    android:id="@+id/shoppingcar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="12dp"
    android:layout_marginEnd="16dp"
    android:background="#FF0000"
    android:text="加入购物车"
    android:textSize="16dp"
    tools:layout_editor_absoluteX="293dp"
    tools:layout_editor_absoluteY="514dp" />

<TextView
    android:id="@+id/text_price"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignStart="@+id/text_title"
    android:layout_marginBottom="171dp"
    android:text="TextView"
    android:textSize="18dp"
    android:textColor="#FF0000"
    />

2.activity

public class InfoActivity extends AppCompatActivity {
    Button shoppingcar;
    TextView text_title,text_price;
    Banner banner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_info);

        text_title=findViewById(R.id.text_title);
        text_price=findViewById(R.id.text_price);
        shoppingcar=findViewById(R.id.shoppingcar);
        banner=findViewById(R.id.banner);

        String title = getIntent().getStringExtra("title");
        String price = getIntent().getStringExtra("price");
        text_title.setText(title);
        text_price.setText(price);

        shoppingcar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent it=new Intent(InfoActivity.this,ShoppingCarActivity.class);
                startActivity(it);
            }
        });

        String img = getIntent().getStringExtra("img");
        List<String> strings = Arrays.asList(img.split("\\|"));

        banner.setBannerStyle(BannerConfig.CENTER);
        banner.setImageLoader(new MyLoader());
        banner.setImages(strings);
        banner.setDelayTime(1000);
        banner.isAutoPlay(true);
        banner.setIndicatorGravity(BannerConfig.CENTER);
        banner.start();


    }
    private class MyLoader extends ImageLoader {
        public void displayImage(Context context, Object path, ImageView imageView) {
            Glide.with(context).load((String) path).into(imageView);
        }
    }


}
研发流程后端开发工具,提示功能开发效率 后端开发工具 立即下载

相关推荐

机器人具有扰动抑制功能的有限时间基于方位角的领航者-跟随者编队控制(Matlab代码实现)

内容概要:本文档标题为《Plecs全桥LLC谐振变换器仿真模型.txt》,但实际内容并未涉及该主题的具体技术细节或仿真建模过程。相反,文档实质是一份由科研服务团队发布的跨学科资源目录,集中展示了大量基于Matlab、Simulink、Python、PSCAD等平台实现的科研项目与算法开发案例,涵盖电力系统、无人机路径规划、微电网优化、状态估计、信号处理、车间调度、图像处理、通信技术、雷达追踪、智能优化算法等多个工程技术领域。每个条目以“【】”标注研究主题,并注明“Matlab代码实现”“Python代码实现”等形式,表明其为可提供技术支持与代码资源的服务项目。文档末尾频繁出现“完整资源下载:公众号——荔枝科研社”及百度网盘链接,明确体现出其作为科研辅助服务推广与引流工具的功能属性。; 适合人群:面向电气工程、自动化、控制科学与工程、计算机科学、智能制造、新能源、航空航天、通信工程及相关交叉学科的研究生、高校教师、科研人员及企业研发工程师。; 使用场景及目标:①为科研人员提供课题选题、技术路线设计与算法实现的参考范例;②辅助学生或研究人员完成课程设计、毕业论文、项目仿真与算法复现任务;③作为第三方技术服务团队的能力展示目录,便于潜在客户快速了解其在多领域提供的定制化仿真与算法开发服务范围。; 阅读建议:此文档并非传统意义上的学术论文或技术教程,而是一份高度碎片化、广告性质浓厚的资源索引清单。读者应忽略其误导性的文件名,将其视为一个综合性科研技术服务目录,重点关注自身研究方向相关的条目,并通过文末提供的公众号或网盘链接进一步获取具体代码与资料。同时,需注意甄别资源的技术质量、原创性与适用性,避免盲目依赖外部服务。

Android Studio 笔记(一)------小问题

初学Android Studio,慢慢摸索,记录一些小问题,免得现在测试的文件删了以后找不到。 -----------------------------------小问题---------------------------------- 1.快捷键 重写方法ctrl+o,import单个包alt+enter。 2.报错空指针 this.setContentView(R.layou...

qq_43533416的博客 1636

科技中介服务机构如何打造高效、可复制的技术交易服务流程?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Android开发之RecyclerView的使用全解

人最先衰老的不是容貌,而是那份不顾一切的闯劲。

乐于分享,乐于讨论,欢迎大家积极讨论 2万+

高校技术转移办公室人员如何提升科研成果的市场推广与转化成功率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

基于LSTM神经网络的风电功率预测研究(Matlab代码实现)

内容概要:本文档名为《Plecs全桥LLC谐振变换器仿真模型.txt》,但其实际内容并未包含与Plecs或全桥LLC谐振变换器相关的具体仿真模型,而是汇集了大量来自优快云博客平台的技术文章标题和片段,内容涉及基于MATLAB的电力系统动态分析、风储VSG系统仿真、多无人机路径规划、最优潮流计算、卡尔曼滤波状态估计、车间调度算法、无线电力传输、抽水蓄能电站调度等多个领域。这些内容主要围绕Matlab/Simulink或Python代码实现展开,覆盖电力电子、电力系统、自动化控制、优化算法、信号处理、深度学习等方向,具有较强的科研仿真属性。然而,文档整体缺乏统一主题与逻辑结构,信息呈现高度碎片化,更像是多个独立技术资源的罗列而非系统性论述。; 适合人群:适用于从事电力系统、电力电子、自动化控制、智能制造、人工智能、信号处理及相关交叉学科的研究生、高校科研人员及企业研发工程师。; 使用场景及目标:①作为科研选题与技术调研的灵感来源,快速掌握当前热门研究方向与方法论;②获取多种仿真模型的设计思路与实现框架,辅助完成课程设计、学位论文或科研项目的建模仿真任务;③结合文中提及的算法(如PSO、NSGA-II、EKF、CNN、LSTM等)与工具(如Matlab/Simulink、PSCAD等),开展系统性学习与二次开发。; 阅读建议:此文档内容杂乱无章,不具备连贯阅读价值,建议仅将其作为索引线索,从中提取感兴趣的主题后,进一步查找原始完整文献或配套代码资源进行深入研究,避免陷入无效信息泛滥的困境。

弹性布局和AndroidAutoSize屏幕适配

导言: 技术在不断的革新,需要有新的技术代替老的方案,老的不再维护,新的一直推荐,作为技术也不能一直停滞不前 概念: 弹性布局(约束布局): ConstraintLayout可以算是RelativeLayout的升级版 屏幕适配: 百分比和最小宽度从px的AndroidAutoLayout方案到dp,pm等主副单位AndroidAutoSize方案 案例步骤: 1:ConstraintLayo...

Aile 3088

产业园区运营负责人如何精准匹配企业与高校科研资源?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

ConstraintLayout使用实践,对比与常用布局做法的区别、优势。

前言:谷歌在2016年的IO大会上推出的一种新的布局方式—-ConstraintLayout,这局是一种约束型的布局方式。 下面我们来对比ConstraintLayout和常用的布局实现相同的页面有什么区别。上效果图 使用ConstraintLayout前提是先在build.gradle下引用如下jardependencies { compile 'com.android.support

赖伟峰的博客 1万+

LLC谐振变换器开环+闭环软启动仿真设计(Simulink仿真实现)

内容概要:本文系统介绍了LLC谐振变换器的开环与闭环软启动仿真设计方法,基于Simulink平台实现,涵盖半桥、全桥等多种拓扑结构的建模与仿真。重点阐述了软启动过程中的控制策略,包括变频控制、移相混合控制、恒压恒流双闭环控制等核心技术,深入分析了从开环启动平稳过渡到闭环控制的切换机制。文中提供了完整的仿真模型、设计报告、参数计算书及参考文献等配套资料,有助于读者全面掌握LLC谐振变换器的工作原理、动态响应特性及其在高频高效DC-DC变换场景中的应用,适用于电力电子系统的设计与优化研究。; 适合人群:具备电力电子与电力系统基础知识,从事电源设计、新能源变换器研发、电力电子器件应用或相关领域研究的研究生、工程师及科研人员。; 使用场景及目标:①掌握LLC谐振变换器软启动过程的控制机制与Simulink建模方法;②学习开环启动至闭环控制的平滑切换策略与实现方式;③开展高频高效DC-DC变换器的性能优化与动态响应分析;④支撑毕业设计、科研项目开发或高水平学术论文的复现与创新研究。; 阅读建议:建议结合所提供的Simulink仿真模型与参数计算文档同步操作,逐步调试关键参数,重点关注软启动过程中电压电流冲击的抑制效果,对比不同控制策略下的系统动态性能差异,深入理解谐振变换器的控制逻辑与稳定性设计要点。

【Python】SUMO + Python 联合仿真平台

强化学习的核心思想是让智能体 (Agent) 通过与环境 (Environment) 的交互来学习如何做出最优决策,以最大化累积奖励 (Cumulative Reward)。在交通场景中,智能体可以是交通信号控制器、自动驾驶车辆或交通管理中心,环境则是 SUMO 模拟的交通路网,奖励则与交通效率、安全、环保等目标相关。交通系统本质上是动态的、随机的、高度复杂的系统,传统的基于规则或模型的优化方法在面对不断变化的需求和突发事件时,往往显得力不从心。强化学习的优势在于:在交通领域,强化学习已经被广泛应用于:为了

宅男很神经 1989

RecyclerView+OKHttp+MVP数据请求

添加的依赖 compile 'com.android.support:appcompat-v7:25.3.1'compile 'com.android.support.constraint:constraint-layout:1.0.2'compile 'com.squareup.okio:okio:1.5.0'compile 'com.squareup.okhttp3:okhttp:3.2.0...

weixin_30732825的博客 95

osgEarth实战:5分钟搞定3DTiles模型加载(附完整配置代码)

本文提供了一份osgEarth加载3DTiles模型的实战指南。通过详解核心Earth文件配置与精简的C++集成代码,帮助开发者快速在三维地球场景中集成倾斜摄影与BIM等海量模型,并分享了性能调优与常见问题排查技巧,有效提升开发效率。

jjj34的博客 479

An_MVP_模式(okhttp)解析RecyclerView/XRecyclerView

运用MVP模式写(okhttp)解析json,数据传输到RecyclerView中 一、三个层Model,view,Presenter; 二、导入okhttp,okio,RecyclerView依赖;compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.squareup.okio:okio:1.13.0' compile 'com.an

en_hlj的博客 268

【医学影像】Deep Learning for Automatic Pneumonia Detection

写在前面的话: 这篇论文是北美放射学会(RSNA)在Kaggle平台上托管的肺炎区域检测挑战赛取得第二名成绩的解决方案。因为笔者需要用到其中的图像增强方案,因此本篇博客只介绍了数据集和图像增强,关于模型的改进和其它改进点没有涉及。 论文地址:https://arxiv.org/abs/2005.13899 代码地址:https://github.com/tatigabru/kaggle-rsna 比赛地址:https://www.kaggle.com/c/rsna-pneumonia-detection-c

chenzhoujian_的博客 1567

Obsidian + AI 自动知识管理:手把手教程

装完后,在命令面板(Ctrl+P)搜 "Generate Summary",AI 会在当前笔记末尾追加一段摘要。你一个月前写的、现在想快速回顾的笔记长篇笔记(三千字以上)开会记录这类信息密集的内容过度自动化。有人装上插件后,所有笔记都让 AI 打标签、写摘要、找关联。最后笔记库看起来整整齐齐,但全都是 AI 的链接,你自己完全没参与。这样做的后果是什么?你写过的笔记跟你没有"真实连接"。你还是记不住。你还是不知道自己的知识库里有什么。AI 推荐,你决策。

weixin_43571227的博客 748

RecyclerView和XRecyclerView的布局和实现的MVP

//MyCallBack 的页面 public interface MyCallBack { void setSuccess(MyData data); void setError(String error); } //Model页面 void getData(String mUrl,int i, MyCallBack callBack); //和ModelImpl的页面 public clas...

zxf19970105的博客 216

23. STM32F103C8T6 ADC采集光敏电阻传感器模块光照强度实战

本文详细介绍了如何使用STM32F103C8T6的ADC模块采集光敏电阻传感器的光照强度。通过硬件接线、核心原理讲解、四步代码配置(GPIO、ADC模式、使能校准、数据滤波)以及串口验证,手把手指导完成从模拟信号到数字值的完整实战流程,并重点提示了ADC时钟分频等关键配置要点。

weixin_42300144的博客 221

登录注册+流式布局+搜索+mvp+ok封装

登陆主界面 package com.example.zk2_mn; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; impor

qimingnanhhh的博客 356

别再手动测接口了!用Pytest+Requests+Allure搭建你的第一个自动化框架(附完整源码)

本文详细介绍了如何使用Pytest+Requests+Allure搭建Python接口自动化测试框架,涵盖环境准备、核心组件封装、测试用例设计、报告生成及CI/CD集成等关键步骤。通过实战案例和完整源码,帮助开发者快速构建高效的接口自动化测试解决方案,提升测试效率和质量。

weixin_42546508的博客 321

MIKE水动力笔记2_水动力基础理论知识

本文所讲内容是水动力基础理论知识,所参考的主要书籍是《水动力学和水质》(第二版,季振刚著,海洋出版社)。

晏长街的博客 1万+

自定义属性动画点击跳转页面展示列表与断网数据库缓存

//    Constants类  请求网络public class Constants { public static final String GET_URL="http://ttpc.dftoutiao.com/jsonpc/refresh?type=5010"; public static final int TYPE1=3; public static fin...

wwe11122的博客 234

ESP32 WIFI 智能巡线小车设计与实现(四足 / 四轮通用)

本文设计的 ESP32 WIFI 智能巡线小车,硬件模块化、软件轻量化,兼容四足与四轮两种结构,实现了自动巡线与 WIFI 远程控制双功能。系统成本低、易上手,适合嵌入式初学者学习 WIFI 通信、传感器应用、运动控制等核心知识点,也可在此基础上扩展蓝牙控制、避障、视觉识别等功能。

weixin_42300449的博客 152

使用OKhttp(MVP)网格布局和线性布局来回切换 适配器里面的正确写法

package com.example.zhoukaomoni.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; i...

qq_42960779的博客 313

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

契约类

//UserApi package mmy.example.com.zklx2_3.Api; public class UserApi { public static final String USER_API = "http://www.xieast.com/api/news/news.php"; } //LoadContract package mmy.example.com.zklx2_3...

qq_43496905的博客 363

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: 搜索框+流式布局
下一篇: 购物车
Android_ZMY
博客等级 码龄8年 2粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值