热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

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

这篇文章主要介绍了如何使用Android接口实现信息的留言板显示,需要的朋友可以参考下

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

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

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

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

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

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




我的第一个默认留言
2015-07-30 08:29:19
林豪
22

林志玲


我的第二个默认留言
2015-07-30 08:31:19
林志玲
18

刘德华



我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言我的第三个默认留言

2015-07-30 08:33:19
林豪
22
人妖
林志玲


dd
2015-07-30 16:35:57
h
0
nn
mm


content
2015-07-30 16:37:49
me
18
male
you


12
2015-07-30 16:52:42
sk
0
le
kd


content
2015-07-30 17:05:32
me
0
youe
dddd


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

  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 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 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 messages = new ArrayList(); 
 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

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

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

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

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

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

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

以上就是本文的全部内容,希望大家喜欢。


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文是关于自学Android的笔记,包括查看类的源码的方法,活动注册的必要性以及布局练习的重要性。通过学习本文,读者可以了解到在自学Android过程中的一些关键点和注意事项。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
author-avatar
20雨荨12_306
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有