2017-01-03 62 views
1

请说我怎样才能将所有品牌的ID全局声明为一个全局变量并将其作为参数传递给http请求?如何在全局声明json id并通过全局变量将它传递给API请求?

按照规定,我需要声明所有五个下文提及的商标为整数的品牌标识在一个单一的全局变量,并将其传递到请求,因为整数

我有形式的参数下面提供我的API响应:

{ 
    "status": 1, 
    "data": [ 
    { 
     "id": 1,----> brand id 
     "name": "AUDI", 
     "code": "AUDI", 
     "image": "", 
     "status": "1", 
     "created_at": "2016-09-27 00:07:38", 
     "updated_at": "2016-09-27 00:07:38" 
    }, 
    { 
     "id": 2-----> brand id 
     "name": "Bravian Motor Works", 
     "code": "BMW", 
     "image": "", 
     "status": "1", 
     "created_at": "2016-09-27 00:07:58", 
     "updated_at": "2016-09-27 00:07:58" 
    }, 
    { 
     "id": 3,---->brand id 
     "name": "AB Volvo", 
     "code": "VOLVO", 
     "image": "", 
     "status": "1", 
     "created_at": "2016-09-27 00:08:36", 
     "updated_at": "2016-09-27 00:08:36" 
    }, 
    { 
     "id": 4,-----> brand id 
     "name": "Ford Motor Company", 
     "code": "FORD", 
     "image": "", 
     "status": "1", 
     "created_at": "2016-09-27 00:11:51", 
     "updated_at": "2016-09-27 00:11:51" 
    }, 
    { 
     "id": 5,-----> brand id 
     "name": "Maruti Suzuki", 
     "code": "Maruti", 
     "image": "", 
     "status": "1", 
     "created_at": "2016-09-27 00:12:14", 
     "updated_at": "2016-09-27 00:12:14" 
    } 
    ], 
    "msg": "success", 
    "info": "data list" 
} 

,我需要通过全局变量,如下图所示:

@Override 
     protected Void doInBackground(Void... arg0) { 

      HttpClient client = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost("http://garage.kaptastech.mobi/api/5k/master/vehicle"); 

      List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(7); 
      nameValuePair.add(new BasicNameValuePair("user_id","5")); 
      nameValuePair.add(new BasicNameValuePair("registration_no", Regno)); 
      nameValuePair.add(new BasicNameValuePair("brand","?")); 
      nameValuePair.add(new BasicNameValuePair("model", "5")); 
      nameValuePair.add(new BasicNameValuePair("type", "1")); 
      nameValuePair.add(new BasicNameValuePair("variant", "1")); 
      nameValuePair.add(new BasicNameValuePair("year", Year)); 

我需要将它传递的地方“ ?”

+0

尝试将其保存在ArrayList和同时作为参数传递使用了循环 –

+0

我试过它作为一个ArrayList。但通过它显示一个错误,数组声明不允许在这里 – Arun

+0

你想根据特定品牌ID得到响应吗?或者你想一次获得所有品牌的回应? –

回答

0

保存在ArrayList中的API响应,并显示在ListView控件,然后在onItemClickListener获得所选品牌的ID在一个变量: -

String selectedBrand; 

lv.setOnItemClickListener(new OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) 
    { 
     selectedBrand=yourArrayList.get(position).getBrandId(); 
     new yourAsyncTask(selectedBrand).execute(); 
    } 
}); 

在你的异步任务: -

class yourAsyncTask extends AsyncTask<String, String, String> { 

    String brand_id; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    public yourAsyncTask(String brand_id)//change argument type accordingly 
    { 
     this.brand_id=brand_id; 
    } 
     //use brand_id as a parameter value 
} 
+1

非常感谢,它对我有用....谢谢 – Arun

1

将api响应保存在对象中。用这些字段和getter + setter创建一个类。

例子:

当你解析API响应:

ArrayList<MyObject> listOfObjects = new ArrayList<MyObject>() 
MyObject object = new MyObject(); 
object.setID(jsonObject.getString("id")); 
object.setName(jsonObject.getString("name")); 
// fill other fields 
listOfObjects.add(object); 

然后保存在您想要的listOfObjects。比如一个经理。

然后你就可以调用该对象的,你需要的信息的干将。 例如:

// loop over all objects 
for(MyObject object : Manager.getInstance().getObjects()) { 
    // do whatever you want with these informations 
    object.getID(); 
} 
+0

,请给我看一个品牌标识的例子,以便我可以自己做其他品牌标识吗?或者如果可能的话给我一些例子链接评论,所以我可以很容易地查看它,因为我是android开发新手,这就是为什么我问你。 – Arun

+0

已更新我的帖子 – beeb

0

创建单独的密钥类,您可以在其中存储全局密钥名称, 例如: 创建类文件为

public class Keys{public static final String KEY_NAME = "keyName";} 

使用上面的类名称为:

Key.KEY_NAME