承接上文,我们来到了MainActivity.java板块的操作,
我们现在要完成的操作是:点击按钮“上”,按钮下方界面可以跳出来一个笑话。
局部代码如下
public void leftbutton(View view) {
Ion.with(this)
.load("http://api.icndb.com/jokes/random")
.asString()
.setCallback(new FutureCallback<String>() {
@Override
public void onCompleted(Exception e, String result) {
/*
{ "type": "success",
"value":
{ "id": 597,
"joke": "Once death had a near Chuck Norris experience.",
"categories": [] }
}
*/
try
{
JSONObject jsondata=new JSONObject(result);
JSONObject value=jsondata.getJSONObject("value");
String joke=value.getString("joke");
TextView textVie=(TextView)findViewById(R.id.tex);
textVie.setText(joke);
}catch(JSONException jsonError)
{
Log.wtf("JSON ERROR",jsonError);
}
}
});
}
介绍一下这个代码值得注意的知识点:
1:首先我们要导入一个Ion库(导入方法:找到android studio左边APP文件夹,下拉找到build.gradle(Module:app ),在dependencies {。。。}中加入一行代码-- compile ‘com.koushikdutta.ion:ion:2.+’)
2:注意这是导入库的一个固定模板
Ion.with(this)
.load("。。。“)
.asString()
.setCallback(new FutureCallback<String>() {
@Override
public void onCompleted(Exception e, String result)
{
。。。
}
});
3:网络链接是进行导入在 load(。。。) 中的,如.load(“http://api.icndb.com/jokes/random”)
4:
public void onCompleted(Exception e, String result)
{
。。。
}
onCompleted() 方法是程序进行网络访问的方法 ,里面要应用try ,catch语句来应对此事件
JSONObject代表一种数据传输格式{“key1”:value1,“key2”,value2…}
{ "type": "success",
"value":
{ "id": 597,
"joke": "Once death had a near Chuck Norris experience.",
"categories": [] }
}
5:来说说里面的事件内容
JSONObject jsondata=new JSONObject(result);
JSONObject value=jsondata.getJSONObject("value");
String joke=value.getString("joke");
第一行:构造一个当前活动JSONObject层的对象
第二行:构造一个当前活动层下的value层的对象
第三行:将value层下的“joke”字符串赋值给一个对象
6:将相应的字符串传送给Textview,再调入xx.setText(yy)即可显示。