0
点赞
收藏
分享

微信扫一扫

Android实战--英文词典(API+GSON+Volley)



上一节我们介绍了GSON和Volley,用GSON对返回的数据进行了初步解析,这一节我们更进一步,讨论一下如何实现英文词典。首先把JSON数据的样式再看一下:

 

Android实战--英文词典(API+GSON+Volley)_英文词典

下面创建bean,这些都和上一节一样:

 

第一个bean:

[java]

​​view plain​​
​​copy​​


1. package org.lxh.demo;
2.
3. import java.util.List;
4.
5. public class Status1 {
6. private int errNum;
7. private String errMsg;
8. //保证变量名与返回JSON的标签名一致,注意!!!!!!!!
9. @Override
10. public String toString() {
11. return "Status [errNum=" + errNum + ", errMsg=" + errMsg + ", retData="
12. "]";
13. }
14. public int getErrNum() {
15. return errNum;
16. }
17. public void setErrNum(int errNum) {
18. this.errNum = errNum;
19. }
20. public String getErrMsg() {
21. return errMsg;
22. }
23. public void setErrMsg(String errMsg) {
24. this.errMsg = errMsg;
25. }
26. public RetData2 getRetData() {
27. return retData;
28. }
29. public void setRetData(RetData2 retData) {
30. this.retData = retData;
31. }
32.
33.
34.
35.
36.
37.
38. }
第二个bean:

[java]

​​view plain​​
​​copy​​


1. package org.lxh.demo;
2.
3. import java.util.List;
4.
5. public class RetData2 {
6. private String from;
7. private String to;
8. DictResult3 dict_result;
9. public String getFrom() {
10. return from;
11. }
12. public void setFrom(String from) {
13. this.from = from;
14. }
15. public String getTo() {
16. return to;
17. }
18. public void setTo(String to) {
19. this.to = to;
20. }
21. public DictResult3 getDictResult() {
22. return dict_result;
23. }
24. public void setDictResult(DictResult3 dictResult) {
25. this.dict_result = dictResult;
26. }
27. @Override
28. public String toString() {
29. return "RetData [from=" + from + ", to=" + to + ", dictResult="
30. "]";
31. }
32.
33.
34.
35. }
第3个bean:

[java]

​​view plain​​
​​copy​​


1. package org.lxh.demo;
2.
3. import java.util.List;
4.
5. public class DictResult3 {
6. private String word_name;
7.
8. private List<Symbols> symbols;
9.
10. public String getWord_name() {
11. return word_name;
12. }
13.
14. public void setWord_name(String word_name) {
15. this.word_name = word_name;
16. }
17.
18. public List<Symbols> getSymbols() {
19. return symbols;
20. }
21.
22. public void setSymbols(List<Symbols> symbols) {
23. this.symbols = symbols;
24. }
25.
26. @Override
27. public String toString() {
28. return "DictResult [word_name=" + word_name + ", symbols=" + symbols
29. "]";
30. }
31.
32. }
第4个bean:


[java]

​​view plain​​
​​copy​​


1. package org.lxh.demo;
2.
3. import java.util.List;
4.
5. public class Symbols {
6. private String ph_am;
7. private String ph_en;
8. private List<Parts> parts;
9.
10. public String getPh_am() {
11. return ph_am;
12. }
13. public void setPh_am(String ph_am) {
14. this.ph_am = ph_am;
15. }
16. public String getPh_en() {
17. return ph_en;
18. }
19. public void setPh_en(String ph_en) {
20. this.ph_en = ph_en;
21. }
22. public List<Parts> getParts() {
23. return parts;
24. }
25. public void setParts(List<Parts> parts) {
26. this.parts = parts;
27. }
28. @Override
29. public String toString() {
30. return "Symbols [ph_am=" + ph_am + ", ph_en=" + ph_en + ", parts="
31. "]";
32. }
33.
34.
35. }
第5个:

[java]

​​view plain​​
​​copy​​


1. package org.lxh.demo;
2.
3. import java.util.Arrays;
4. import java.util.List;
5.
6. public class Parts {
7. private String part;
8. public String getParts() {
9. return part;
10. }
11. public void setParts(String parts) {
12. this.part = parts;
13. }
14. public String[] getMeans() {
15. return means;
16. }
17. public void setMeans(String[] means) {
18. this.means = means;
19. }
20. @Override
21. public String toString() {
22. return "Parts [parts=" + part + ", means=" + Arrays.toString(means)
23. "]";
24. }
25. String[] means;
26.
27.
28.
29.
30. }

所需要的jar包也和上一节一样,可以参考上一节,我们主要讨论一下MainActivity.java程序:

package org.lxh.demo;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.gson.Gson;

public class MainActivity extends Activity {
private Button tojson;
RequestQueue mQueue;
StringRequest stringRequest;
Gson gson;
String str;
private TextView textView;
private EditText editText;
String string = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

textView = (TextView) findViewById(R.id.text);
editText = (EditText) findViewById(R.id.edit);
tojson = (Button) findViewById(R.id.btn);
gson = new Gson();
mQueue = Volley.newRequestQueue(MainActivity.this);
tojson.setOnClickListener(new OnClickListener() {
public void onClick(View v) {

string = editText.getText().toString();
String requestUrl = getRequestUrl(string);
stringRequest = new StringRequest(requestUrl,
new Response.Listener<String>() {
public void onResponse(String response) {

Log.d("TAG", response);
System.out.println("response=" + response);
Status1 status = gson.fromJson(response,
Status1.class);
StringBuffer buffer = new StringBuffer();// 保存所用字符串

RetData2 retData2 = status.getRetData();// 第二个对象的获取

System.out.println("from=" + retData2.getFrom());
DictResult3 dictResult3;
dictResult3 = retData2.getDictResult();// 第三个对象的获取
buffer.append("单词:"
+ dictResult3.getWord_name() + "\n");
System.out.println("word_name="
+ dictResult3.getWord_name());
List<Symbols4> symbols4s = dictResult3
.getSymbols();// 第四个是对象数组哦,获取对象数组
buffer.append("音标"
+ symbols4s.get(0).getPh_en() + "\n");// symbols4s.get(0)用于获取第一个对象
List<Parts> parts = symbols4s.get(0).getParts();// 同理,最后一个也是对象数组
for (int i = 0; i < parts.size(); i++) {
buffer.append("part:"
+ parts.get(i).getParts()// parts.get(i)获取对象List中的各个对象
+ "\n");
buffer.append("词义:");
for (int j = 0; j < parts.get(i).getMeans().length; j++) {
String[] aStrings = parts.get(i)
.getMeans();
buffer.append(aStrings[j]);
}
buffer.append("\n");
}

textView.setText(buffer);

}
}, new Response.ErrorListener() {
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
}

});
mQueue.add(stringRequest);
}
});

}

private String getRequestUrl(String word) {
String url = null;
if (word != null) {
url = "http://apistore.baidu.com/microservice/dictionary?query="
+ word + "&from=en&to=zh";
}
return url;
}

}

 

运行实例:

 

Android实战--英文词典(API+GSON+Volley)_英文词典_02

Android实战--英文词典(API+GSON+Volley)_英文词典_03

以上实例只是展示如何使用,有很多Bug有待完善,大家可以自行改善,也可以发挥你的能力,做成一部真正的字典app。


举报

相关推荐

0 条评论