做一个显示成绩的页面
package com.example.jy.myapp;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONObject;
public class GradeActivity extends AppCompatActivity {
ListView listView;
//初始化
String [] titles={"学生"} ;
String [] texts={"成绩"} ;
int [] resIds={R.drawable.icon,R.drawable.icon,R.drawable.icon,R.drawable.icon};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grade);
final Data app = (Data)getApplication();
this.setTitle("成绩查询");
listView=(ListView)this.findViewById(R.id.MyListView);
new Thread(new Runnable() {
public void run() {
WebUtil wu = new WebUtil();
try {
//控制台打印收到的信息
System.out.println("-------------app.getCourseName()----------------"+app.getCourseName());
String courseName = new String(app.getCourseName().getBytes(), "UTF-8");
//从网页上获取数据
String re = wu.getData("http://192.168.1.107:8080/AndroidServer/listGrade_grade.action?courseName="+courseName+"&username="+app.getUserID()+"&role="+ app.getRole());
System.out.println("================"+re);
//new一个json对象,获取数组
JSONObject jsonObject2 =new JSONObject(re);
JSONArray jsonArray = jsonObject2.getJSONArray("Rows");
titles = new String[jsonArray.length()];
texts = new String[jsonArray.length()];
for (int i=0;i<jsonArray.length();i++)
{
JSONObject jsonObjectSon= (JSONObject)jsonArray.opt(i);
titles[i] = jsonObjectSon.getString("course");
if(app.getRole().equals("0")) {
texts[i] = "学生姓名:" + jsonObjectSon.getString("student") + ";分数:" + jsonObjectSon.getString("grade");
}else {
texts[i] = "分数:" + jsonObjectSon.getString("grade");
}
}
listView.setAdapter(new ListViewAdapter(titles,texts,resIds));
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
//setContentView(R.layout.activity_grade);
}
public class ListViewAdapter extends BaseAdapter {
View[] itemViews;
public ListViewAdapter(String[] itemTitles, String[] itemTexts,
int[] itemImageRes) {
itemViews = new View[itemTitles.length];
for (int i = 0; i < itemViews.length; ++i) {
itemViews[i] = makeItemView(itemTitles[i], itemTexts[i],
itemImageRes[i]);
}
}
public int getCount() {
return itemViews.length;
}
public View getItem(int position) {
return itemViews[position];
}
public long getItemId(int position) {
return position;
}
private View makeItemView(String strTitle, String strText, int resId) {
LayoutInflater inflater = (LayoutInflater) GradeActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// 使用View的对象itemView与R.layout.item关联
View itemView = inflater.inflate(R.layout.listview_item, null);
// 通过findViewById()方法实例R.layout.item内各组件
TextView title = (TextView) itemView.findViewById(R.id.itemTitle);
title.setText(strTitle);
TextView text = (TextView) itemView.findViewById(R.id.itemText);
text.setText(strText);
ImageView image = (ImageView) itemView.findViewById(R.id.itemImage);
image.setImageResource(resId);
return itemView;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
return itemViews[position];
return convertView;
}
}
}
log输出如下:
05-15 20:43:48.525 3329-3626/com.example.jy.myapp I/System.out: -------------app.getCourseName()----------------Java课程设计
05-15 20:43:48.576 3329-3626/com.example.jy.myapp I/System.out: ================{"Rows":[{"course":"Java课程设计","grade":"90","student":"张三"},{"course":"Java课程设计","grade":"87","student":"李四"}],"Total":2}
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6855)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.view.ViewRootImpl.focusableViewAvailable(ViewRootImpl.java:3221)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:759)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:759)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:759)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:759)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:759)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:759)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.view.View.setFlags(View.java:11364)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.view.View.setFocusableInTouchMode(View.java:8077)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.widget.AdapterView.checkFocus(AdapterView.java:744)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at android.widget.ListView.setAdapter(ListView.java:494)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at com.example.jy.myapp.GradeActivity$1.run(GradeActivity.java:61)
05-15 20:43:48.605 3329-3626/com.example.jy.myapp W/System.err: at java.lang.Thread.run(Thread.java:761)
05-15 20:43:50.200 3329-3329/com.example.jy.myapp I/Choreographer: Skipped 94 frames! The application may be doing too much work on its main thread.