2014-10-11 23 views
0

這是我的代碼,它從以前的活動中獲取詳細信息:它獲取兩個值作爲位置,bloodGroup和SearchDonor將獲取並處理它。我想通過一些參數獲取意圖doBackground

Intent intent =getIntent(); 

location = intent.getStringExtra("location"); 

bloodgroup = intent.getStringExtra("bloodgroup"); 

這樣的iget一個當我doBackGround過程寫,我想在下面的代碼

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 


import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
    import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListAdapter; 
    import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 

public class SearchDonor extends ListActivity { 
private Context context; 
private static String url = "http://10.0.2.2/bl/getDonor.php"; 

private static final String TAG_FIRSTNAME = "FirstName"; 
private static final String TAG_MIDDLENAME = "MiddleName"; 
private static final String TAG_LASTNAME = "LastName"; 

private static final String TAG_ADDRESS = "Address"; 
private static final String TAG_CELLPHONE = "CellPhone"; 
private static final String TAG_DONORS = "donors"; 
private static final String TAG_SUCCESS = "success"; 
private static final String TAG_DONORID = "Donor_ID"; 
private static final String TAG_LOCATION = "location"; 
private static final String TAG_BLOODGROUP = "bloodgroup"; 



JSONArray donors = null; 

ArrayList<HashMap<String, String>> jsonlist = new ArrayList<HashMap<String, String>>(); 

ListView lv ; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_search_donor); 





    new ProgressTask(SearchDonor.this).execute(); 






} 

@Override 
protected void onListItemClick(ListView l,View v,int position,long id) 
{ 
    Intent intent = new Intent(this,DonorDetails.class); 

    String did=((TextView)v.findViewById(R.id.donorId)).getText().toString(); 
    String Name=((TextView)v.findViewById(R.id.vehicleType)).getText().toString(); 
    String Address=((TextView)v.findViewById(R.id.vehicleColor)).getText().toString(); 
    String cellphone=((TextView)v.findViewById(R.id.fuel)).getText().toString(); 

    intent.putExtra("did", did); 
    intent.putExtra("Name", Name); 
    intent.putExtra("Address", Address); 
    intent.putExtra("cellPhone", cellphone); 

    startActivity(intent); 

} 



private class ProgressTask extends AsyncTask<String, Void, Boolean> { 
    private ProgressDialog dialog; 

    private ListActivity activity; 

    // private List<Message> messages; 
    public ProgressTask(ListActivity activity) { 
     this.activity = activity; 
     context = activity; 
     dialog = new ProgressDialog(context); 
    } 

    /** progress dialog to show user that the backup is processing. */ 

    /** application context. */ 
    private Context context; 

    protected void onPreExecute() { 
     this.dialog.setMessage("Progress start"); 
     this.dialog.setIndeterminate(false); 
     this.dialog.setCancelable(false); 
     this.dialog.show(); 
    } 

    @Override 
    protected void onPostExecute(final Boolean success) { 
     if (dialog.isShowing()) { 
      dialog.dismiss(); 
     } 



     ListAdapter adapter = new SimpleAdapter(context, jsonlist, 
       R.layout.list_item, new String[] { TAG_DONORID,TAG_FIRSTNAME , TAG_ADDRESS, 
         TAG_CELLPHONE }, new int[] { 
         R.id.donorId,R.id.vehicleType, R.id.vehicleColor, R.id.fuel }); 

     setListAdapter(adapter); 

     // selecting single ListView item 
     lv = getListView(); 





    } 

    protected Boolean doInBackground(final String... args) { 

     JSONParser jParser = new JSONParser(); 





     List<NameValuePair>params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair(TAG_LOCATION,location)); 
     params.add(new BasicNameValuePair(TAG_BLOODGROUP,bloodgroup)); 

     JSONObject json = jParser.makeHttpRequest(url,"GET",params); 

     // getting JSON string from URL 
     try { 
      // Checking for SUCCESS TAG 
      int success = json.getInt(TAG_SUCCESS); 

      if (success == 1) { 
       // products found 
       // Getting Array of Products 
       donors = json.getJSONArray(TAG_DONORS); 

       // looping through All Products 
       for (int i = 0; i < donors.length(); i++) { 
        JSONObject c = donors.getJSONObject(i); 

        String donoID = c.getString(TAG_DONORID); 

       String firstName = c.getString(TAG_FIRSTNAME); 
       String middleName = c.getString(TAG_MIDDLENAME); 
       String lastName = c.getString(TAG_LASTNAME); 
       String address = c.getString(TAG_ADDRESS); 
       String cellPhone = c.getString(TAG_CELLPHONE); 

       HashMap<String, String> map = new HashMap<String, String>(); 
       map.put(TAG_DONORID, donoID); 

       // adding each child node to HashMap key => value 
       map.put(TAG_FIRSTNAME, firstName); 
       map.put(TAG_MIDDLENAME, middleName); 
       map.put(TAG_LASTNAME ,lastName); 
       map.put(TAG_ADDRESS, address); 
       map.put(TAG_CELLPHONE, cellPhone); 
       jsonlist.add(map); 
       } 
       } 

      else{ 
       String message ="No Donor Found"; 
       HashMap<String, String> map = new HashMap<String, String>(); 
       map.put(TAG_FIRSTNAME, message); 
       map.put(TAG_MIDDLENAME, ""); 
       map.put(TAG_LASTNAME ,""); 
       map.put(TAG_ADDRESS,""); 
       map.put(TAG_CELLPHONE, ""); 
       jsonlist.add(map); 
      } 

      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 


     return null; 

    } 

} 

}

+0

您是否試過這段代碼?它不工作?你的'ProgressTask'是'SearchDonor'的一個內部類,因此它可以訪問'getIntent'方法。 – Wakim 2014-10-11 19:51:33

+0

這工作perfect.if我使用手動字符串像,location =「xxx」BloodGroup =「A + ve」。但在哪裏使用getIntent方法 – Prathm 2014-10-11 20:05:00

+0

在onCreate().. – greenapps 2014-10-11 20:42:20

回答

0

可以傳遞兩個值(逗號分隔或作爲陣列添加上述代碼)在execute()方法中,這些值將在doInBackground()方法中可用。

代碼:

// Calling AsyncTask in onCreate() 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_search_donor); 

    Intent i = getIntent(); 
    if(i!=null) { 
     location = intent.getStringExtra("location"); 
     bloodgroup = intent.getStringExtra("bloodgroup"); 

     new ProgressTask(SearchDonor.this).execute(location,bloodgroup); 

    } 
} 



private class myAsyncTask extends AsyncTask<String, String, String> { 

@Override 
protected Void doInBackground(String...params) 
{ 

     // Getting values from params 
     String location = params[0]; 
     String bloodGroup= params[1]; 
     .... 
} 

我沒有運行的代碼,但它會給你的想法做。如果你在這裏得到任何錯誤信息。

相關問題