关于接口的初步练习

这是主函数

package com.example.com.webtext;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import static com.example.com.webtext.R.id.button;

public class MainActivity extends AppCompatActivity implements View .OnClickListener{
    private List<massage > Mymassage=new ArrayList<>() ;
    TextView nameText;
    TextView summaryText;
    ImageView img;
    Button sendRequest;
    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sendRequest=(Button) findViewById(button) ;
        nameText =(TextView) findViewById(R.id.name ) ;
        summaryText =(TextView) findViewById(R.id.summery);
        img=(ImageView)  findViewById(R.id.photo) ;
        sendRequest .setOnClickListener(this) ;
    }

    @Override
    public void onClick(View v ){
        if(v.getId() == button){
            HttpUtil .sendHttpRequest("https://qcloud.waydrow.com/LoveInn/index.php/Home/App/getInfoList",new HttpCallbackListener(){
                @Override
                public void onFinish(String response){
                    //Log.d(TAG, "onFinish: "+response);
                    parseJSONWithJSONObject(response );
                }
                @Override
                public void onError(Exception e){
                    e.printStackTrace();;
                }
            });
        }
        setRecyclerview();
    }
    private void parseJSONWithJSONObject(String jsonData){
        try{
            JSONArray jsonArray =new JSONArray(jsonData ) ;
            for(int i=0;i<jsonArray .length() ;i++) {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String name = jsonObject.getString("name");
                String summary = jsonObject.getString("summary");
                String imgUrl = "https://qcloud.waydrow.com" + jsonObject.getString("photo");
                massage massage1 = new massage(name, summary, imgUrl);
                Mymassage.add(massage1);
            }
        }
        catch (Exception e){
            e.printStackTrace() ;
        }
    }
    public void setRecyclerview(){
        RecyclerView recyclerView =(RecyclerView ) findViewById(R.id.recycler_view);
        StaggeredGridLayoutManager LayoutManager=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL) ;
        recyclerView.setLayoutManager(LayoutManager);
        adapter Adapter =new adapter(Mymassage );
        recyclerView.setAdapter(Adapter);
        Mymassage =null ;
    }
}

这是开启连接的类

package com.example.com.webtext;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;

/**
 * Created by 定不负相思懿 on 2017/5/10.
 */

public class HttpUtil {
    public static void sendHttpRequest(final String adress,final HttpCallbackListener linsener){
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection connection =null ;
                BufferedReader reader =null;
                try {
                    URL url=new URL(adress);
                    connection =(HttpURLConnection ) url.openConnection() ;
                    connection .setRequestMethod("GET");
                    connection .setConnectTimeout(8000);
                    connection .setReadTimeout(8000);
                    connection .setDoInput(true);
                    connection .setDoOutput(true);
                    InputStream in=connection.getInputStream();
                    reader =new BufferedReader(new InputStreamReader(in)) ;
                    StringBuilder response=new StringBuilder();
                    String line;
                    while((line=reader .readLine()) !=null){
                       response .append(line) ;
                    }
                    if(linsener !=null){
                        linsener.onFinish(response .toString());
                    }
                } catch (ProtocolException e) {
                    linsener.onError(e);
                } catch (MalformedURLException e) {
                    linsener.onError(e);
                } catch (IOException e) {
                    linsener.onError(e);
                } finally{
                    if(connection!=null ){
                        connection .disconnect();
                    }
                }
            }
        }).start(); ;
    }
}

还有类和adapter

package com.example.com.webtext;

/**
 * Created by 定不负相思懿 on 2017/5/11.
 */

public class massage {
    String name;
    String summary;
    String photo;
    public massage(String name, String summary, String photo){
        this.name =name;
        this.summary =summary ;
        this.photo =photo;
    }
    public String getname(){
        return name;
    }
    public String getsummary (){
        return summary ;
    }
    public String getphoto(){
        return photo;
    }
}

package com.example.com.webtext;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.List;

/**
 * Created by 定不负相思懿 on 2017/5/11.
 */

public class adapter extends RecyclerView.Adapter<adapter .ViewHolder >{
    private List<massage> mymassage;
    public adapter (List<massage> fruit3){
        mymassage=fruit3;
    }
    static class ViewHolder extends RecyclerView.ViewHolder {
        ImageView image;
        TextView name;
        TextView summary;
        View fruitview;
        Context context1;
        public ViewHolder(View view) {
            super(view);
            fruitview =view;
            image=(ImageView ) view.findViewById(R.id.photo) ;
            name =(TextView ) view.findViewById(R.id.name) ;
            summary =(TextView ) view.findViewById(R.id.summery) ;
        }

    }
    @Override
    public ViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(parent .getContext() ).inflate(R.layout.recyclerview_layout,parent ,false ) ;
        final ViewHolder holder=new ViewHolder(view );
        holder.context1=parent .getContext() ;
        holder.fruitview.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                int position=holder.getAdapterPosition() ;
                massage  massage =mymassage  .get(position );
            }
        }) ;
        return holder ;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        massage mymassage1=mymassage.get(position );
        holder .name.setText(mymassage1  .getname() ) ;
        holder .summary .setText(mymassage1 .getsummary() ) ;
        Glide.with(holder .context1).load(mymassage1.getphoto()).into(holder.image );
    }
    @Override
    public int getItemCount() {
        return mymassage .size() ;
    }
}

最重要的!就是接口

public interface HttpCallbackListener {

    void onFinish(String response);
    void onError(Exception e);

}

虽然看着接口很简单,但是...用起来就知道了。当你会的时候就会发现真的很方便,但是如果你不会的话,不如直接写函数。

时间: 2024-10-03 21:53:33

关于接口的初步练习的相关文章

实现接口自动化初步设想以及实现第一部

最近工作之余一直在想怎么能够提高工作效率,特别是接口测试至一块,后来想到了接口自动化,在长期的测试过程中会经常做接口测试,可是那只是单一的一个接口,那么我们怎么去做批量的接口测试呢?自己设想如下: 1.在一个工作目录下准备几个文件,分别为主程序运行文件,接口地址文本文件,请求参数文本文件,请求参数的值的文本文件 2.主要思维:通过运行主程序,去获取接口地址下的文本文件,再将该地址对应的请求参数和请求参数值对应起来,然后拼接上 3.再通过urllib发送请求到服务器,根据返回的状态码以及返回值来判

tair中对get/get_range接口的理解及为get_range添加命令行测试接口

经过这段时间对淘宝开源K/V缓存系统tair基础接口put/get/get_range等源码的详细剖析后,按自己的理解简单总结下tair中我较关心的get和get_range这两个接口的基本实现流程.由于get_range接口是最新几个版本才加入的功能,因此以前的tair Java客户端及最新版本安装后的命令行测试中都没有加入get_range测试接口,这无疑给需要专门优化get_range接口的我带来了不便,因此本文最后给出了在tair中实现get_range命令行测试的方法和示例. 1 ta

java接口理解

/* 接口:初步理解,可以认为是抽象类,当所有方法都是抽象方法时,的另一种表示方式. 接口的定义格式和类差不多,接口的名字也需要大写. Interface 接口名 { ....//接口定义. } 接口中的一般内容有:常量.抽象方法 接口中的成员都是由固定的修饰符修饰的. 常量:public static final (全局常量,用类名引用) 抽象方法:public abstract 接口中在定义成员时,可以不带修饰符,因为接口中的成员修饰符都是固定的,少什么修饰符,系统就会默认添加 什么修饰符.

OpenAI 开源机器人模拟 Python 库,并行模拟处理速度提升400%

10000da.cnvboyule.cnjiaeidaypt.cn 在过去一年的研究中,OpenAI团队开源一个使用 MuJoCoengine开发的用于机器人模拟的高性能Python库.雷锋网了解到, 该Python库是OpenAI团队深入学习机器人研究的核心工具之一,现在该团队发布的是作为MuJoCo的主要版本的mujoco-py(Python 3 的 MuJoCo 绑定). Mujoco-py 1.50.1.0带来了许多新的功能和显着的性能提升.雷锋网获悉,新功能包括以下几点: 高效处理并行

FPGA PS2协议

VerilogHDL那些事儿_建模篇(黑金FPGA开发板配套教程) 作者:akuei2 说明:参照该书将部分程序验证学习一遍 学习时间:2014年5月3号 主要收获: 1. 对PS2接口有初步了解: 2. 编码键盘和非编码键盘: 3. 通码和断码. PS2相关知识: 1. PS2接口 2. PS2协议对数据的读取,是"下降沿有效".数据总共有11位,起始位(1).数据位(8).奇偶校验位(1)和停止位(1). 3. 编码键盘与非编码键盘 编码键盘本身带有实现接口主要功能所需的硬件电路,

Alpha冲刺(5/10)——追光的人

1.队友信息 队员学号 队员博客 221600219 小墨 https://www.cnblogs.com/hengyumo/ 221600240 真·大能猫 https://www.cnblogs.com/PowerfulPanda/ 221600212 kilig https://www.cnblogs.com/kilig98/ 221600235 fishkk https://www.cnblogs.com/fishkk/ 221600236 巴啦啦魔仙 https://www.cnblo

MySQL自增id不连续问题

项目中有一张表是记录人员,在每个新用户调用接口认证通过了之后,会有一个往该表插入这个新用户信息的操作. 但是在线上环境中,发现该表的自增id不连续,且间隔都是差了2,比如上一个人的id是10,下一个人的id就是12,而在前端页面中,一个用户认证通过后,会调用3个接口,初步排查是MySQL并发操作导致了自增id不连续的情况 在这篇文章中,列举了导致自增id不连续的几个原因,这次遇到的就是第一种情况,因为个人的信息中我设置了唯一索引: https://www.jianshu.com/p/957f60

hibernate--query接口初步

Query session.createQuery(String hql)方法; * hibernate的session.createQuery()方法是使用HQL(hibernate的查询语句)语句查询对象的. * hql:是查询对象的,例如:"from User",其中from不区分大小写,而User是区分大小写,因为它是对象.是User类 * 返回Query对象. * 执行这条语句后,Hibernate会根据配置文件中所配置的数据库适配器自动生成相应数据库的SQL语句.如: ib

微机接口技术与汇编语言上机实验报告_汇编初步(intel8086)

实验环境:intel x386 一.要求:将3000H单元开始置数为00H-0FH SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE, SS:SSTACK START: PUSH DS XOR AX, AX MOV DS, AX MOV SI, 3000H MOV CX, 16 AA1: MOV [SI], AL INC SI INC AL LOOP AA1 ;CX == 0? NEXT():AA1