今天我实现了网络请求数据,解析并将数据添加到Listview中。上个星期我有提到说要实现点击Listview中item实现不同的功能,还是没头绪。如有幸被阅读,希望指教一下。我用的是hTTPClient的post方法请求的数据。在实现请求之前,还有一个主activity跳转。代码如下:

daa11af390e10b8f1ff17b310928d457.png

请求activity代码:

public class MachineInterface extends Activity {

private ListView machineType;

private ArrayList machineList = new ArrayList();

private MachineAdapter adapter;

private MachineParams mParams;

private StringBuilder builder;

String line = null;

Handler handler = new Handler(){

public void handleMessage(android.os.Message msg) {

if(msg.what == 0x123){

machineType.setAdapter(adapter);

}

}

};

[email protected]

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.machine_interface);

machineType = (ListView) findViewById(R.id.list_machine_type);

Thread thread = new Thread(){

[email protected]

public void run() {

// TODO Auto-generated method stub

super.run();

HttpParams params = new BasicHttpParams();//定义网络通信的接口

HttpConnectionParams.setConnectionTimeout(params, 5000);//连接超时为5秒

HttpConnectionParams.setSoTimeout(params, 5000);//数据传输超时为5秒

HttpClient client = new DefaultHttpClient(params);//客服端的实现

//post方法请求

HttpPost post = new HttpPost("http://www.bomeans.com/api_v2/getTypeList.php?lang=tw&api_key=80b546857c51b8dd53bae4fd9cec784605477ebbf");

InputStream inStream = null;

try {

HttpResponse response = client.execute(post);//响应post请求

if(response.getStatusLine().getStatusCode() == 200){

HttpEntity entity = response.getEntity();//实体对象

inStream = entity.getContent();

BufferedReader bReader = new BufferedReader(new InputStreamReader(inStream));

builder = new StringBuilder();

while((line = bReader.readLine()) != null){

builder.append(line);

Log.e("builder", builder.toString());

}

JSONObject jsonObject = new JSONObject(builder.toString());

Log.e("jsonObject", jsonObject.toString());

//JSONArray array = new JSONObject(builder.toString()).getJSONArray("data");//也可以这么用

JSONArray array = jsonObject.getJSONArray("data");

for (int i = 0; i < array.length(); i++) {

JSONObject object = (JSONObject) array.opt(i);

mParams = new MachineParams();

mParams.setMdName(object.getString("md_name"));

machineList.add(mParams);

Log.e("@11", "#114");

adapter = new MachineAdapter(MachineInterface.this, machineList);

handler.sendEmptyMessage(0x123);

}

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

};

thread.setContextClassLoader(getClass().getClassLoader());

thread.start();、

自定义适配器代码:

public class MachineAdapter extends BaseAdapter {

private Context context;

private ArrayList machineList = new ArrayList();

public MachineAdapter(Context context,ArrayList machineList){

this.context = context;

this.machineList = machineList;

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return machineList.size();

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return position;

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

convertView = LayoutInflater.from(context).inflate(R.layout.adapter, null);

TextView machineName = (TextView) convertView.findViewById(R.id.text_machine);

machineName.setText(machineList.get(position).getMdName());

return convertView;

}

}

属性类就一个属性。

原文:http://www.cnblogs.com/xiongke/p/4165223.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐