Java Android在textview上打印json数组输出
我有一个android应用程序,可以解析来自web服务的json数组输出 我用一个java应用程序测试了输出,效果很好。 我的目的是在textview中打印一个输出,但我失败了 类JsonReaderJava Android在textview上打印json数组输出,java,android,json,Java,Android,Json,我有一个android应用程序,可以解析来自web服务的json数组输出 我用一个java应用程序测试了输出,效果很好。 我的目的是在textview中打印一个输出,但我失败了 类JsonReader public class JsonReader { private static String readAll(Reader rd) throws IOException { StringBuilder sb = new StringBuilder(); int cp; whi
public class JsonReader
{
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1)
{
sb.append((char) cp);
}
return sb.toString();
}
public static JSONArray readJsonFromUrl(String url) throws IOException, JSONException
{
InputStream is = new URL(url).openStream();
try
{
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONArray json = new JSONArray(jsonText);
return json;
}
finally
{
is.close();
}
}
public JsonReader() throws JSONException, IOException
{
}
}
主要活动
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView uid = (TextView)findViewById(R.id.editText1);
try
{
JsonReader r = new JsonReader();
JSONArray json = r.readJsonFromUrl ("http://localhost:8888/derdeery/zaki.php");
for (int i =1; i < json.length(); ++i)
{
JSONObject jsons =json.getJSONObject(i);
int service_ID = jsons.getInt("service_ID");
String Site_comment = jsons.getString("site_comment");
String Img_Link = jsons.getString("img_link");
uid.setText(Site_comment);
}
}
catch(Exception e)
{ }}}
公共类MainActivity扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终文本视图uid=(文本视图)findViewById(R.id.editText1);
尝试
{
JsonReader r=新的JsonReader();
JSONArray json=r.readJsonFromUrl(“http://localhost:8888/derdeery/zaki.php");
for(int i=1;i
我的xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
android:ems="10" />
需要进行以下更改才能使其正常工作: 1.
editText1
是EditText
而不是TextView
。因此,在用于转换的代码中使用与xml文件中相同的视图:
final EditText uid = (EditText)findViewById(R.id.editText1);
2.当前正在UI线程上执行网络操作(API调用),如果网络操作(API调用)花费更多时间,将导致ANR对话框或NetworkOnMainThreadException
使用的doInBackground
方法执行网络操作(API调用)和onPostExecute
使用doInBackground
方法的结果更新UI。试试这个
JSONObject json=新的JSONObject(jsonString);
JSONArray jArray=json.getJSONArray(“列表”)
System.out.println(“****JARRAY*****”+JARRAY.length());
对于(int i=0;iIs it TextView或EditText?仅说明“我失败了”是不够的。请详细解释您的问题是什么以及您尝试了什么来修复它。它不会给我输出!上面是如何打印json数组值的示例。因此,从中吸取一些想法,并将其应用到您的代码中。这对我很有用。
System.out.println("*****JARRAY*****" + jArray.length());
for(int i=0; i<jArray.length(); i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag", "_id" + json_data.getInt("account") +
", mall_name" + json_data.getString("name") +
", location" + json_data.getString("number") +
", telephone" + json_data.getString("url") +
",----" + json_data.getString("balance") +
",----" + json_data.getString("credit") +
",----" + json_data.getString("displayName")
);
}