亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

如何使用Android實現接口實信息在留言板顯示

2020-04-11 11:27:35
字體:
來源:轉載
供稿:網友

下面通過圖文并茂的方式給大家分享下如何使用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這個方法必須要寫。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91亚洲精品久久久| 日韩美女免费观看| 久久久久成人网| 欧美在线欧美在线| 九九热99久久久国产盗摄| 91精品国产高清久久久久久| 日本欧美中文字幕| 久久久精品网站| 黄色精品一区二区| 亚洲a∨日韩av高清在线观看| 中文字幕亚洲一区二区三区五十路| 久久综合免费视频影院| 欧美与黑人午夜性猛交久久久| 97视频免费在线观看| 亚洲精美色品网站| 91欧美精品午夜性色福利在线| 日本亚洲精品在线观看| 亚洲а∨天堂久久精品喷水| 日韩欧美在线观看视频| 久青草国产97香蕉在线视频| 欧美日本黄视频| 亚洲精品自拍视频| 亚洲白拍色综合图区| 久久久精品亚洲| 国产精品久久久久久久av大片| 国产精品免费久久久久影院| 国内精品免费午夜毛片| 亚洲欧美在线磁力| 亚洲成人久久久久| 91视频免费在线| 国产免费一区二区三区在线能观看| 在线播放日韩专区| 国产精品欧美久久久| 欧洲永久精品大片ww免费漫画| 国产综合香蕉五月婷在线| 国产精品自产拍在线观看中文| 欧美国产在线电影| 热re91久久精品国99热蜜臀| 国产精品精品久久久久久| 欧美性猛交xxxx免费看| 欧美丰满少妇xxxxx| 日韩经典一区二区三区| 俺也去精品视频在线观看| 精品国产一区二区三区久久久| 久久夜精品香蕉| 国模gogo一区二区大胆私拍| 色噜噜亚洲精品中文字幕| 欧洲成人在线观看| 日韩欧美综合在线视频| 精品国内自产拍在线观看| 97视频在线观看免费| 国产成人小视频在线观看| 亚洲天堂视频在线观看| 精品亚洲夜色av98在线观看| 亚洲日本成人女熟在线观看| 欧美在线视频一二三| 欧美激情视频一区| 91国产美女在线观看| 亚洲成人在线视频播放| 欧美性黄网官网| 日韩亚洲欧美中文高清在线| 国产精品视频免费在线| 国内精品久久久久久中文字幕| 亚洲成人激情在线观看| 亚洲伦理中文字幕| 97色在线播放视频| 亚洲免费电影一区| 欧美肥老妇视频| 国产亚洲欧洲高清一区| 伊人久久五月天| 色偷偷av一区二区三区| 国产亚洲精品美女久久久久| 国产成人黄色av| 91精品久久久久久久久久久久久久| 欧美在线观看www| 亚洲精品一区二区三区不| 日韩av观看网址| 色偷偷亚洲男人天堂| 亚洲大尺度美女在线| 亚洲精品国产品国语在线| 亚洲国产精品小视频| 成人在线视频网站| 亚洲激情视频在线观看| 成人精品一区二区三区电影免费| 久久精品免费播放| 在线免费看av不卡| 国产免费久久av| 日韩视频免费在线观看| 国产成人精彩在线视频九色| 日韩成人在线观看| 精品女同一区二区三区在线播放| 亚洲美女自拍视频| 正在播放欧美一区| 欧美片一区二区三区| 亚洲精品国产美女| 69视频在线播放| 中文字幕精品影院| 亚洲欧美制服中文字幕| 中文字幕综合一区| 亚洲国产一区二区三区在线观看| 欧美大尺度在线观看| 亚洲在线免费视频| 久久久久久亚洲| 一本色道久久88精品综合| 久久久久久久久久久免费精品| 伊人久久久久久久久久久| 久久久久久伊人| 国产成人一区二区在线| 国产精品99久久99久久久二8| 黄色一区二区在线| 亚洲精品视频在线观看视频| 国内精品久久久久影院 日本资源| 久久天天躁夜夜躁狠狠躁2022| 中文字幕精品一区久久久久| 欧美高清无遮挡| 亚洲区一区二区| 欧美一级淫片丝袜脚交| 成人激情视频免费在线| 黑人巨大精品欧美一区二区免费| 欧美日韩国产色视频| 中文字幕亚洲综合| 91国产精品视频在线| 中文字幕成人在线| 亚洲第一区第二区| 欧美日韩激情视频| 日韩欧美精品免费在线| 国产精品亚洲第一区| 亚洲永久免费观看| 久久影院在线观看| 中文字幕日韩精品有码视频| 亚洲最大激情中文字幕| 国产日韩欧美中文在线播放| 日韩精品电影网| 欧美激情精品久久久久久蜜臀| 国产99久久精品一区二区 夜夜躁日日躁| 欧美国产日韩一区二区| 91精品国产乱码久久久久久蜜臀| 日韩欧美国产免费播放| 国产精品综合网站| 久久精品美女视频网站| 亚洲在线视频福利| 国产经典一区二区| 久久久精品久久| 国产成人涩涩涩视频在线观看| 国产精品丝袜白浆摸在线| 国产精品久久久久久久久免费| 欧美一级免费看| 久久久免费精品视频| 日产日韩在线亚洲欧美| 国产日韩在线免费| 最近2019免费中文字幕视频三| 亚洲精品美女免费| 欧美在线视频一区| 欧美大片免费看| 最好看的2019年中文视频| 成人信息集中地欧美| 26uuu亚洲国产精品| 久久精品91久久久久久再现| 欧美成人第一页| 欧美精品激情视频| 欧美精品久久久久久久久久| 欧美尺度大的性做爰视频| 日韩电影视频免费| 日韩国产高清视频在线|