iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >如何使用Android实现接口实信息在留言板显示
  • 324
分享到

如何使用Android实现接口实信息在留言板显示

接口Android 2022-06-06 09:06:05 324人浏览 八月长安
摘要

下面通过图文并茂的方式给大家分享下如何使用Android实现接口实信息在留言板显示。      看到标题,顾名思义,我今天只是和大家讲一

下面通过图文并茂的方式给大家分享下如何使用Android实现接口实信息在留言板显示。

     看到标题,顾名思义,我今天只是和大家讲一下如何实现接口信息的显示,不包括添加信息。

     接口帮助文档:Http://api.wzhospital.cn/msg/help 

     根据查看接口文档,我们可以知道接口内部的一些信息结构。

     当然,想要查看具体的信息,是通过此链接:http://api.wzhospital.cn/MSG/api/Message/GetList

     获取以下信息,来验证显示的正确性。


<Messages xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/LYB.Models">
<Data>
<Message>
<Content>我的第一个默认留言</Content>
<CreateTime>2015-07-30 08:29:19</CreateTime>
<Messager>林豪</Messager>
<MessagerAge>22</MessagerAge>
<MessagerSex>女</MessagerSex>
<Receiver>林志玲</Receiver>
</Message>
<Message>
<Content>我的第二个默认留言</Content>
<CreateTime>2015-07-30 08:31:19</CreateTime>
<Messager>林志玲</Messager>
<MessagerAge>18</MessagerAge>
<MessagerSex>女</MessagerSex>
<Receiver>刘德华</Receiver>
</Message>
<Message>
<Content>
我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言
</Content>
<CreateTime>2015-07-30 08:33:19</CreateTime>
<Messager>林豪</Messager>
<MessagerAge>22</MessagerAge>
<MessagerSex>人妖</MessagerSex>
<Receiver>林志玲</Receiver>
</Message>
<Message>
<Content>dd</Content>
<CreateTime>2015-07-30 16:35:57</CreateTime>
<Messager>h</Messager>
<MessagerAge>0</MessagerAge>
<MessagerSex>nn</MessagerSex>
<Receiver>mm</Receiver>
</Message>
<Message>
<Content>content</Content>
<CreateTime>2015-07-30 16:37:49</CreateTime>
<Messager>me</Messager>
<MessagerAge>18</MessagerAge>
<MessagerSex>male</MessagerSex>
<Receiver>you</Receiver>
</Message>
<Message>
<Content>12</Content>
<CreateTime>2015-07-30 16:52:42</CreateTime>
<Messager>sk</Messager>
<MessagerAge>0</MessagerAge>
<MessagerSex>le</MessagerSex>
<Receiver>kd</Receiver>
</Message>
<Message>
<Content>content</Content>
<CreateTime>2015-07-30 17:05:32</CreateTime>
<Messager>me</Messager>
<MessagerAge>0</MessagerAge>
<MessagerSex>youe</MessagerSex>
<Receiver>DDDd</Receiver>
</Message>
</Data>
</Messages>

首先,我先给大家看一下界面效果图(排版难看,大家谅解)。

  1xiaoguo
222


第一步:先说一下,整个页面是布局。

           这个页面由两部分组成,其一:activity_main.xml中,只包含一个listView.其二:重写了一个list_message.xml.   listview chongxielistview                                                      


                                            activity_main.xml                                                                                                   list_message.xml

            关于为什么重写一个.xml文件呢,这是因为listview本身比较复杂,重写一个便于引用显示。

第二步:根据接口文档,建立实体类。

               wen


                单击 GET api/Message/GetList 将获得接口信息,由于我采用的是JSON的格式,我只截取这一段代码。

                      json 


                     根据信息分析,我创建了一个message.java的实体类。


package com.example.message.model;
import android.R.string;
public class Message {
 private String content;
 private String creatime;
 private String messager;
 private String messagerAge;
 private String messagerSex;
 private String reciver;
 public String getContent() {
 return content;
 }
 public void setContent(String content){
 this.content=content;
 }
 public String getCreatime() {
 return creatime;
 }
 public void setCreatime(String creatime) {
 this.creatime=creatime;
 }
 public String getMessager() {
 return messager;
 }
 public void setMessager(String messager) {
 this.messager=messager;
 }
 public String getMessagerAge() {
 return messagerAge;
 }
 public void setMessagerAge(String messagerAge) {
 this.messagerAge=messagerAge;
 }
 public String getMessagerSex() {
 return messagerSex;
 }
 public void setMessagerSex(String messagerSex) {
 this.messagerSex=messagerSex;
 }
 public String getReceiver() {
 return reciver;
 }
 public void setReceiver(String reciver) {
 this.reciver=reciver;
 }
 public String tostring() {
 return "content:"+content+",creatime:"+creatime+",Messager:"+messager+",MessagerAge:"+messagerAge+",MessagerSex:"+messagerSex+",Reciver:"+reciver;
 }
}

      第三步:我们需要做的是如何获取接口的数据,并且去解析(我将其写于MainActivity.java中)它,那么我们需要新建一个新类,这个我取名为HttpData.java。它的作用就是获取接口中的内容。代码如下:


package com.example.message;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpParams;
public class HttpData {
 private HttpClient client;//定义HTTP一个客户端
 private HttpResponse reponse;//定义一个HTTP响应
 private HttpEntity entity;//定义一个HTTP实体
 private InputStream in;//定义一个输入流
 private BufferedReader reader;//定义一个字符流;
 private StringBuffer data = new StringBuffer("");//定义一个空的字符串缓冲;
 private String url = "http://api.wzhospital.cn/MSG/api/Message/GetList";
 //private String url1="http://api.wzhospital.cn/MSG/api/Message/Add";
 private HttpGet get;//GET:请求的数据随HTTP请求头发过去
 public StringBuffer getData(){//此方法获取接口的文本内容,并以字符流的形式return
 client = new DefaultHttpClient();
 get = new HttpGet(url);//url定向
 try {
  HttpParams params = new HttpParams() {
  public HttpParams setParameter(String arg0, Object arg1) {
   // TODO Auto-generated method stub
   return null;
  }
  public HttpParams setLongParameter(String arg0, long arg1) {
   // TODO Auto-generated method stub
   return null;
  }
  public HttpParams setIntParameter(String arg0, int arg1) {
   // TODO Auto-generated method stub
   return null;
  }
  public HttpParams setDoubleParameter(String arg0, double arg1) {
   // TODO Auto-generated method stub
   return null;
  }
  public HttpParams setBooleanParameter(String arg0, boolean arg1) {
   // TODO Auto-generated method stub
   return null;
  }
  public boolean removeParameter(String arg0) {
   // TODO Auto-generated method stub
   return false;
  }
  public boolean isParameterTrue(String arg0) {
   // TODO Auto-generated method stub
   return false;
  }
  public boolean isParameterFalse(String arg0) {
   // TODO Auto-generated method stub
   return false;
  }
  public Object getParameter(String arg0) {
   // TODO Auto-generated method stub
   return null;
  }
  public long getLongParameter(String arg0, long arg1) {
   // TODO Auto-generated method stub
   return 0;
  }
  public int getIntParameter(String arg0, int arg1) {
   // TODO Auto-generated method stub
   return 0;
  }
  public double getDoubleParameter(String arg0, double arg1) {
   // TODO Auto-generated method stub
   return 0;
  }
  public boolean getBooleanParameter(String arg0, boolean arg1) {
   // TODO Auto-generated method stub
   return false;
  }
  public HttpParams copy() {
   // TODO Auto-generated method stub
   return null;
  }
  };
  reponse = client.execute(get);//执行客户端的get操作
  entity = reponse.getEntity();//获取响应中是实例
  in = entity.getContent();//获取实例中的文本内容
  reader = new BufferedReader(new InputStreamReader(in));//读入字符流
  String line = "";
  while( (line = reader.readLine()) != null ){
  data.append(line);
  }
  return data;
 } catch (ClientProtocolException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 return data; 
 }
}

第四步:封装数据集合(listview),通过视图绘制,此处采用的是数据适配器绘制。

代码如下:


package com.example.message;
import java.util.List;
import java.util.zip.Inflater;
import com.example.message.model.Message;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class DataAdapter extends BaseAdapter{
 private List<Message> messages;
 private Context context;
 private TextView v_content;
 private TextView v_time;
 private TextView v_messger;
 private TextView v_messgerAge;
 private TextView v_messgerSex;
 private TextView v_receiver;
 public DataAdapter(List<Message> messages, Context context){
 this.messages = messages;
 this.context = context;
 }
 public int getCount() {
 return messages.size();
 }
 public Object getItem(int arg0) {
 return messages.get(arg0);
 }
 public long getItemId(int arg0) {
 // TODO Auto-generated method stub
 return arg0;
 }
 public View getView(int arg0, View arg1, ViewGroup arg2) {
 RelativeLayout layout = (RelativeLayout)LayoutInflater.from(context).inflate(R.layout.list_message, null);
 Message msg = (Message)getItem(arg0);
 v_content = (TextView)layout.findViewById(R.id.Content);
 v_time = (TextView)layout.findViewById(R.id.CreateTime);
 v_messger = (TextView)layout.findViewById(R.id.Meassger);
 v_receiver = (TextView)layout.findViewById(R.id.Receiver);
 v_messgerAge=(TextView)layout.findViewById(R.id.MessagerAge);
 v_messgerSex=(TextView)layout.findViewById(R.id.MessagerSex);
 v_content.setText(msg.getContent());
 v_time.setText(msg.getCreatime());
 v_messger.setText(msg.getMessager());
 v_receiver.setText(msg.getReceiver());
 v_messgerAge.setText(msg.getMessagerAge());
 v_messgerSex.setText(msg.getMessagerSex());
 return layout;
 }
}

第五步:我们来看一看MainActivity.java是如何调用方法获取数据,并解析的。此处额外新开了一个子线程,进行操作。代码如下:


package com.example.message;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.util.ArrayList;
import java.util.List; 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ListView;
import com.example.message.model.Message; 
public class MainActivity extends Activity {
 private List<Message> messages = new ArrayList<Message>(); 
 private DataAdapter myAdapter; //定义一个自己的适配器,用于绘制
 private Handler handler;//定义一个Handler,Handler 负责在必要时进行信息格式化
 private ListView listView;
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 listView = (ListView)findViewById(R.id.listView);
 handler = new Handler() {
  public void handleMessage(android.os.Message msg) {
  if(msg.what == 0x123){
   System.out.println("接收数据");
   for(Message g:messages){
   System.out.println(g.getContent());
   }
   myAdapter = new DataAdapter(messages, MainActivity.this);
   listView.setAdapter(myAdapter);
  }
  };
 }; 
 new Thread(new Runnable() {
  public void run() {
  // TODO Auto-generated method stub
  HttpData data = new HttpData();
  StringBuffer str = data.getData();
  System.out.println(str.toString());
  Log.v("msg", str.toString());
  try {
   JSONObject object = new JSONObject(str.toString());//使用json ,解析数据
   JSONArray msg = (JSONArray)object.get("Data");
   for(int i=0; i<msg.length(); i++){
   JSONObject o = msg.getJSONObject(i);
   Message message = new Message();
   message.setContent(o.getString("Content"));
   message.setCreatime(o.getString("CreateTime"));
   message.setMessager(o.getString("Messager"));
   message.setMessagerAge(o.getString("MessagerAge"));
   message.setMessagerSex(o.getString("MessagerSex"));
   message.setReceiver(o.getString("Receiver"));
   messages.add(message);
   }
   android.os.Message handlerMsg = new android.os.Message();
   handlerMsg.what = 0x123;
   handler.sendMessage(handlerMsg);
   System.out.println("发送数据");
  } catch (JSONException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  }
 }).start();
 }
}

以上,就是实现接口留言板的显示。有以下几点,是在我写的时候遇到的问题。

1、个别电脑的虚拟机和电脑设置的问题,程序可能跑不起来,建议使用安卓真机。

2、由于我们的程序存在网络访问,需要在网络访问配置文件当中加写权限设置。

3、有关网络方面的东西,都必须写在子线程上,这就是为什么我重新开了一个新的线程。

4、控件的更新必须在主线程上,否则将出错。

5、当我们使用适配器绘制时,其中getCount这个方法必须要写。

您可能感兴趣的文章:asp简单的ajax留言板asp简单的ajax留言板(采用三层模式)利用XML开发留言板简单的例子ASP+XML留言板介绍本人ajax留言板的源程序 不错的应用js来自经典的打造简单的PHP&Mysql留言板php xml留言板 xml存储数据的简单例子asp有效防止网站留言板出现垃圾留言/评论实现思路JS+CSS模拟可以无刷新显示内容的留言板实例ASP开发基于XML的留言板


--结束END--

本文标题: 如何使用Android实现接口实信息在留言板显示

本文链接: https://www.lsjlt.com/news/26624.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php如何实现用户留言板
    这篇文章主要介绍“php如何实现用户留言板”,在日常操作中,相信很多人在php如何实现用户留言板问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何实现用户留言板”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-22
  • Android如何实现socket通信统一接口
    小编给大家分享一下Android如何实现socket通信统一接口,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Android实现socket通信统一接口,统一接口之后可以在不需要大量修改应用层代码的情况下,使用与当前功能类...
    99+
    2023-06-25
  • Thinkphp5微信小程序如何实现获取用户信息接口
    这篇文章主要为大家展示了“Thinkphp5微信小程序如何实现获取用户信息接口”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Thinkphp5微信小程序如何实现...
    99+
    2024-04-02
  • Flutter:如何在Android中实现串口通信调试
            本文介绍如何通过flutter_libserialport插件在Flutter中实现串口通信调试。 1、引入依赖         在flutter工程的pubspec.yaml文件中引入flutter_libserialpo...
    99+
    2023-08-31
    android flutter 串口 dart
  • 如何使用node.js实现接口
    这篇文章主要讲解了“如何使用node.js实现接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用node.js实现接口”吧!安装node环境创建一个文件夹放node项目,如api_e...
    99+
    2023-07-05
  • Go如何利用反射reflect实现获取接口变量信息
    本篇内容主要讲解“Go如何利用反射reflect实现获取接口变量信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go如何利用反射reflect实现获取接口变量信息”吧!引言反射是通过实体对象获...
    99+
    2023-06-30
  • 如何在Android在使用TextView实现一个显示与隐藏全文功能
    如何在Android在使用TextView实现一个显示与隐藏全文功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。参数定义<declare-styleab...
    99+
    2023-05-31
    android textview roi
  • 怎么用vbscript实现在消息框中显示一个超链接
    这篇文章主要为大家展示了“怎么用vbscript实现在消息框中显示一个超链接”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么用vbscript实现在消息框中显示一个超链接”这篇文章吧。代码如下...
    99+
    2023-06-08
  • 如何使用JAVA接口实现多实现类
    这篇文章主要介绍了如何使用JAVA接口实现多实现类,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。class NoteBook {  &...
    99+
    2023-06-02
  • 如何在ASP中使用Spring接口实现同步?
    ASP是一种非常流行的Web开发技术,而Spring则是一个非常流行的Java开发框架。这篇文章将介绍如何在ASP中使用Spring接口实现同步。 什么是Spring Spring是一个非常流行的Java开发框架,它提供了丰富的功能和工...
    99+
    2023-09-02
    同步 spring 接口
  • 如何使用Go语言实现同步接口打包?
    在Go语言中,接口是一种非常重要的概念。它们允许我们定义一组方法,然后任何类型只要实现了这些方法就可以被视为这个接口的实现者。这种设计模式可以使代码更加灵活,可扩展性更强。但是,当我们需要将多个接口打包成一个时,我们可能会遇到一些困难。在...
    99+
    2023-05-31
    同步 接口 打包
  • 如何使用C语言实现车辆信息管理系统
    小编给大家分享一下如何使用C语言实现车辆信息管理系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下车辆信息管理系统问题描述:建立车辆信息管理系统,实现...
    99+
    2023-06-29
  • 如何使用C语言实现超市信息管理系统
    这篇文章主要介绍了如何使用C语言实现超市信息管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下设计要求:设计一个超市信息管理系统,利用结构体存储货物信息和所购...
    99+
    2023-06-29
  • 如何在go语言中使用接口实现日志存储功能?
    在Go语言中,接口是一个非常强大的概念。它可以让我们以一种更加抽象的方式来描述代码中的行为,并且可以让我们更好地复用代码。在本文中,我们将探讨如何使用接口实现日志存储功能。 首先,让我们来看一下日志存储功能需要实现哪些功能。通常来说,日志存...
    99+
    2023-08-22
    日志 接口 存储
  • 如何在Android应用中利用Intent实现获取联系人的信息
    今天就跟大家聊聊有关如何在Android应用中利用Intent实现获取联系人的信息,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Intent的使用intent是一个好东西他可以启动A...
    99+
    2023-05-31
    android intent
  • 如何在PHP中实现微信卡券核销接口
    随着电商行业的蓬勃发展,越来越多的企业开始了解和使用微信卡券功能,而为了更好地与用户互动,微信卡券核销接口的使用成为了一个必不可少的环节。本文将介绍如何在PHP中实现微信卡券核销接口。一、开发准备1.微信公众平台账号2.PHP开发环境3.微...
    99+
    2023-05-14
    PHP 微信卡券 核销接口
  • 如何在Linux中使用Lsusb命令显示有关USB设备信息
    本篇文章为大家展示了如何在Linux中使用Lsusb命令显示有关USB设备信息,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在Linux中我们使用lsusb命令列出USB设备及其属性,lsusb用于...
    99+
    2023-06-15
  • Go语言中如何使用接口来实现多态性?
    Go语言是一种强类型、静态类型的编程语言,它支持面向对象编程(OOP)的特性,其中最重要的特性之一是多态性。多态性是面向对象编程中的一个重要概念,它允许不同的对象对同一消息做出不同的响应。本文将介绍Go语言中如何使用接口来实现多态性。 接口...
    99+
    2023-08-05
    对象 接口 数据类型
  • Java中如何使用接口实现自然语言处理?
    自然语言处理(NLP)是人工智能领域中的一个重要分支,它致力于让计算机能够理解、分析和处理人类的自然语言。在Java中,我们可以使用接口来实现NLP功能,下面将介绍如何使用接口实现自然语言处理。 定义接口 首先,我们需要定义一个接口来...
    99+
    2023-09-17
    接口 自然语言处理 javascript
  • 如何在SpringBoot中使用Spring-AOP实现接口鉴权
    目录面向切面编程AOP的底层原理实现AOP的相关术语相关注解以及切入点表达式实现接口鉴权1. 配置yml文件2. 读取账密配置3.编写接口鉴权方法4. 编写AOP5.编写接口测试面向...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作