比如后台返回的数据是这样的
{
“success”: true,
“msg”: “操作成功”,
“obj”: [
{
“position”: 1,
“name”: “小明”,
“number”: “10001”,
“school”: “中大”
},
{
“position”: 2,
“name”: “小强”,
“number”: “10021”,
“school”: “华师”
}
{
“position”: 3,
“name”: “晓华”,
“number”: “10032”,
“school”: “北大”
}
],
“arrayAjaxJson”: {},
“sql”: null,
“type”: null,
“state”: “success”,
“stateCode”: “00”
}
向用户展示的效果大致是这样的:
首先定义一个TableActivity
public class TableActivity extends Activity{
private ListView itemList;
private TableItemAdapter adapter;
private List<Student> list = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//此处的布局就如上图展示,就不在次列出来了
setContentView(R.layout.activity_table);
//userName,userId假设数据不做定义
loadlistItemData(userId,userName);
adapter = new TableItemAdapter();
itemList.setAdapter(adapter);
}
//假设要传参 userName,userId
private void loadlistItemData(int userId,String userName){
Map map = new HashMap();
map.put("userId",userId);
map.put("userName"userName);
//url 请求地址
Http.sessionPost(this,url,map,new JsonCallBack() {
@Override
protected void onDataSuccess(JSONObject t) {
list.clear();
try{
JSONArray array = t.getJSONArray("obj");
Student item;
for(int i=0;i<array.length();i++){
JSONObject jobj = array.getJSONObject(i);
item = new Student();
item.position = jobj.optInt("position");
item.name = jobj.optString("name");
item.number = jobj.optString("number");
item.school = jobj.optString("school");
list.add(item);
}
adapter.notifyDataSetChanged();
}catch(JSONException e){
e.printStackTrace();
}
}
});
}
class TableItemAdapter extends BaseAdapter{
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TableItemView tableItemView = null;//相当于ViewHolder holder = null;
if(convertView == null){
//此处布局看面展示的图,就不写了
convertView = View.inflate(TableActivity.this,R.layout.item);
tableItemView = new TableItemView ((ViewGroup) convertView);
convertView.setTag(tableItemView);
}else{
tableItemView = (TableItemView )convertView.getTag();
}
Student items = list.get(position);
tableItemView.tableItemAdapter = TableActivity.this.adapter;
tableItemView.refresh(items);
return convertView;
}
}
//假如有一些点击事件,可以在ViewHolder中写,方便调用
class TableItemView {
TextView position;
TextView name;
TextView number;
TextView school;
Student item;
TableItemAdapter tableItemAdapter;
public TableItemView (ViewGroup vg){
position = (TextView) vg.findViewById(R.id.position);
name = (TextView) vg.findViewById(R.id.name);
number = (TextView) vg.findViewById(R.id.number);
school = (TextView) vg.findViewById(R.id.school);
}
public void refresh(Student item){
this.item = item;
position.setText(item.position+"");
name.setText(item.name);
number.setText(item.number);
school.setText(item.school);
}
}
//定义一个实体类,与返回数据一致
class Student implements Serializable{
private int position;//排名
private Stirng name;//姓名
private String number;//学号
private String school;//学校
}
}