android中網路請求資料,解析並添加到Listview中

來源:互聯網
上載者:User

標籤:android   blog   http   io   ar   os   sp   for   on   

今天我實現了網路請求資料,解析並將資料添加到Listview中。上個星期我有提到說要實現點擊Listview中item實現不同的功能,還是沒頭緒。如有幸被閱讀,希望指教一下。我用的是hTTPClient的post方法請求的資料。在實現請求之前,還有一個主activity跳轉。代碼如下:

 

請求activity代碼:

public class MachineInterface extends Activity {

  private ListView machineType;
  private ArrayList<MachineParams> machineList = new ArrayList<MachineParams>();
  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);
      }
    }
  };
  @Override
  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(){
    @Override
    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<MachineParams> machineList = new ArrayList<MachineParams>();

public MachineAdapter(Context context,ArrayList<MachineParams> 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;
}

}

屬性類就一個屬性。

 

android中網路請求資料,解析並添加到Listview中

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.