学习到android的后面,我们就会学习到连接接口,解析json。在很多的语言方面会解析json非常重要,在android中有原生的api进行解析,也可以使用第三方库进行解析。

如果我们使用原生的api进行解析的话,就需要进行一层一层的进行解析。

直接上代码

//。。。。。

package com.example.lianxijiexi;

import java.io.Serializable;

/**
* Created by Yu on 2017/10/24.
*/

public class MusicInfo implements Serializable{
private String albumname;
private String singername;
private String songname;

public MusicInfo(String songname, String albumname, String singername) {
this.songname = songname;
this.albumname = albumname;
this.singername = singername;
}

public String getAlbumname() {
return albumname;
}

public String getSingername() {
return singername;
}

public String getSongname() {
return songname;
}

public void setAlbumname(String albumname) {
this.albumname = albumname;
}

public void setSingername(String singername) {
this.singername = singername;
}

public void setSongname(String songname) {
this.songname = songname;
}

@Override
public String toString() {
return "MusicInfo{" +
"albumname='" + albumname + '\'' +
", singername='" + singername + '\'' +
", songname='" + songname + '\'' +
'}';
}
}

//这是我使用的一个json

public interface StringUtils {
String url = "{\n" +
" \"curnum\": 20,\n" +
" \"curpage\": 1,\n" +
" \"g_searchid\": \"12902471958383200\",\n" +
" \"keyword\": \"liedehua\",\n" +
" \"list\": [\n" +
" {\n" +
" \"albumid\": 33846,\n" +
" \"albummid\": \"00045jMv2hcbmO\",\n" +
" \"albumname\": \"Wonderful World 2007香港演唱会\",\n" +
" \"conn\": 20,\n" +
" \"download\": 1,\n" +
" \"fromat\": \"qqhq;common;mp3common;wmacommon;crcommon\",\n" +
" \"interval\": 226000,\n" +
" \"musicalbumid\": 33846,\n" +
" \"musicid\": 874881,\n" +
" \"musicsingerid\": 163,\n" +
" \"pubtime\": 1201795200,\n" +
" \"singerid\": 163,\n" +
" \"singermid\": \"003aQYLo2x8izP\",\n" +
" \"singername\": \"刘德华\",\n" +
" \"size\": 1849431,\n" +
" \"songid\": 874881,\n" +
" \"songmid\": \"003dIM7m02Fpo9\",\n" +
" \"songname\": \"暗里着迷 (;暗里着迷(Live);)\",\n" +
" \"songurl\": \"http://stream9.qqmusic.qq.com/12874881.wma\",\n" +
" \"source\": 12\n" +
" },\n" +
" {\n" +
" \"albumid\": 96781,\n" +
" \"albummid\": \"000b79wf3pGa96\",\n" +
" \"albumname\": \"Unforgettable 中国巡回演唱会2011\",\n" +
" \"conn\": 20,\n" +
" \"download\": 1,\n" +
" \"fromat\": \"qqhq;common;mp3common;wmacommon;crcommon\",\n" +
" \"interval\": 333000,\n" +
" \"musicalbumid\": 96781,\n" +
" \"musicid\": 1136768,\n" +
" \"musicsingerid\": 163,\n" +
" \"pubtime\": 1328803200,\n" +
" \"singerid\": 163,\n" +
" \"singermid\": \"003aQYLo2x8izP\",\n" +
" \"singername\": \"刘德华\",\n" +
" \"size\": 2711579,\n" +
" \"songid\": 1136768,\n" +
" \"songmid\": \"000Cnlmm2htNAR\",\n" +
" \"songname\": \"我恨我痴心 (;我恨我痴心(Live);)\",\n" +
" \"songurl\": \"http://stream1.qqmusic.qq.com/13136768.wma\",\n" +
" \"source\": 12\n" +
" }

//我们解析的是这一串简单的数据,如果只是解析简单的数据的话,原生的api会比第三方库更为方便。

public class MainActivity extends AppCompatActivity {
private List<MusicInfo> list;
private ListView list_item;
private Adapter ad;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
ad = new Adapter(MainActivity.this,list);
list_item.setAdapter(ad);
list_item.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this, ""+list.get(i).toString(), Toast.LENGTH_SHORT).show();
}
});
}
private void initView() {
list=new ArrayList<>();
list_item = (ListView) findViewById(R.id.list_item);
}
private void initData() {
try {
JSONObject jsonObject = new JSONObject(StringUtils.url);
JSONArray list = jsonObject.getJSONArray("list");
for (int i = 0; i < list.length(); i++) {
JSONObject jsonObject1 = list.getJSONObject(i);
String albumname = jsonObject1.getString("albumname");
String singername = jsonObject1.getString("singername");
String songname = jsonObject1.getString("songname");
MusicInfo musicInfo = new MusicInfo(albumname, singername, songname);
this.list.add(musicInfo);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}

//赋值到布局

public class Adapter extends BaseAdapter {
private Context context;
private List<MusicInfo> musicInfo;

public Adapter(Context context, List<MusicInfo> musicInfo) {
this.context = context;
this.musicInfo = musicInfo;
}

@Override
public int getCount() {
return musicInfo.size();
}

@Override
public Object getItem(int i) {
return musicInfo.get(i);
}

@Override
public long getItemId(int i) {
return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
aa a;
if (view==null){
a = new aa();
view=LayoutInflater.from(context).inflate(R.layout.item,null);
a.textView = view.findViewById(R.id.textView);
a.textView2 =view.findViewById(R.id.textView2);
a.textView3 =view.findViewById(R.id.textView3);
view.setTag(a);
}else {
a= (aa) view.getTag();
}
a.textView.setText(musicInfo.get(i).getSongname().toString());
a.textView2.setText(musicInfo.get(i).getAlbumname().toString());
a.textView3.setText(musicInfo.get(i).getSingername().toString());
return view;
}
class aa{
TextView textView,textView2,textView3;
}
}

//布局文件

<ListView
android:id="@+id/list_item"
android:layout_width="match_parent"
android:layout_height="match_parent">

</ListView>

==================

<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_alignLeft="@+id/textView"
android:layout_alignStart="@+id/textView"
android:layout_marginTop="22dp"
android:id="@+id/textView2" />

<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2"
android:layout_marginTop="27dp"
android:id="@+id/textView3" />

<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="72dp"
android:layout_marginStart="72dp"
android:layout_marginTop="34dp"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

转载于:https://www.cnblogs.com/yudada/p/7732298.html

关于原生解析的简单使用相关推荐

  1. Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示...

    Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示 今天项目中要实现一个天气的预览,加载的信息很多,字段也很多,所以理清了一下思路,准备独立出来写一个总结,这样对大家 ...

  2. Delphi XE6 原生解析json

    Delphi XE6 原生解析json (2014-07-22 23:22:35) 转载▼ 标签: it 分类: DelphiXE6 Delphi XE5带了system.json单元,原生提供了js ...

  3. Spring 容器IOC解析及简单实现

    这篇文章来自极客学院 : Spring 容器IOC解析及简单实现 最近一段时间,"容器"两个字一直萦绕在我的耳边,甚至是吃饭.睡觉的时候都在我脑子里蹦来蹦去的.随着这些天一次次的交 ...

  4. android:layout 冒号,android-json解析及简单例子(补汉6个汉字字).pdf

    android json 解析及简单例子 JSON 的定义: 一 种轻量级的数据交换格式,具有良好的可读和便于快速 编写的特性.业内主流技术为其提供了完整的解决方案(有 点类似于正则表达式 ,获得了当 ...

  5. Android音频开发(五)如何存储和解析最简单的音频wav文件

    我们大家都知道,无论是文字.图像还是声音,都必须以一定的格式来组织和存储起来,然后其它的软件再以相同的协议规则,相应的格式才能去打开解析这一段数据,例如,对于原始的图像数据,我们常见的格式有 YUV. ...

  6. nginx解析漏洞简单复现及修复

    Nginx简介 Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占内存小.并发能力强:国内使用Nginx的有百度.京东.新浪.网易.腾讯.淘宝等 ...

  7. css画钟表_利用css+原生js制作简单的钟表

    利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期 ...

  8. Spring Boot自动装配过程解析及简单Demo演示

    文章目录 1.约定大于配置 2.自动装配原理 2.1.`@SpringBootApplication` 2.2.`@EnableAutoConfiguration` 2.3.`@Import` 2.4 ...

  9. 原生JS实现简单放大镜效果

    [前言] 本文介绍下原生JS实现简单图片放大镜效果 [主体] 时间问题,直接上源码 <!DOCTYPE html> <html> <head><meta ch ...

最新文章

  1. python 基础_列表的其他操作 4
  2. SVG关注复杂图形的网页绘制技术
  3. Androidx ViewPager+Fragment 懒加载
  4. 【机器学习】集成学习各方法优缺点特征总结
  5. 计算机硬盘瓶颈,为何你的电脑卡的飞起,看看是不是遇到存储瓶颈
  6. C#中用WMI实现对驱动的查询
  7. 多生产者多消费者linux内核,Linux多线程实现“生产者和消费者”
  8. 一笔订单,但是误付了两笔钱!这种重复付款异常到底该如何解决?
  9. SUSE12SP3-Mycat(4)rule.xml配置详解
  10. JSK-A1144 代码填空:阶梯三角形【水题】
  11. 最小圆覆盖(随机增量法模拟退火法)
  12. hover 插入html元素,解决hover生成border造成的元素移动方法
  13. 魅族手机在开发调试中无法打印log的解决方法
  14. 小猫爪:PMSM之FOC控制12-扩展卡尔曼滤波状态观测器解析
  15. vue在filters中使用sort()无限循环踩坑实践
  16. 前端性能优化:7.页面渲染优化
  17. xcode9 IphoneX 调试
  18. shim和polyfill
  19. html中siblings方法,jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例...
  20. Vitalik:ETH2.0 之后,协议层会稳定下来

热门文章

  1. 工作碰到的问题解决积累
  2. Log sum inequalit 对数和不等式的证明
  3. python 试题:写一段程序逐行读入一个文本文件,并在屏幕上打印出来。
  4. 域名证书到期监控告知
  5. 使用ActiveMQ实现阶梯式消息通知
  6. 芯片制造:巨亏前行 行业标杆
  7. SAP资产折旧-工作量法业务实践和实操
  8. 互联网公司招聘--奇虎360--技术类--2014年笔试题
  9. PTA_7-2 数组元素的删除
  10. 为什么word打字换行的时候突然上一行文字间距变大了?如图