在 volley 请求参数中发送特定格式的数组列表
Send arraylist with specific format in volley request params
我正在 volley 请求参数中发送一些键和值。我能够成功发送所有数据,但是,我想以这种格式发送其中一个 ArrayList
params.put("facilities", "facilities=1&facilities=3&facilities=7");
我以 1、3 和 7 为例这将包括 selected 并且在我的设施 ArrayList 中的元素。我在屏幕上有 8 个项目,如果我 select 4 那么 ArrayList 将包含 4 个项目但是如何以这种精确的参数格式发送?我也尝试了下面的代码,但它也没有用
for (int i=0; i<facilitiesList.size(); i++){
params.put("facilities", facilitiesList.get(i).toString());
}
我想以我在顶部显示的格式发送所有 selected 数据。任何人都知道如何解决这个问题?
编辑 - 我使用下面的代码select 项
private List<Integer> facilitiesList; ///initialization
private BaseRecyclerAdapter<FacilitiesApi.ApiResponse.Datum, FacilitiesViewHolder> mBaseRecyclerAdapter = new BaseRecyclerAdapter<FacilitiesApi.ApiResponse.Datum, FacilitiesViewHolder>(FacilitiesViewHolder.class, R.layout.layout_list_item_facilities) {
@Override
protected void populateViewHolder(final FacilitiesViewHolder viewHolder, final FacilitiesApi.ApiResponse.Datum model, final int position) {
viewHolder.mCustomCheckBoxFacilities.setText(model.getName());
if (facilitiesList != null) {
if (facilitiesList.contains(model.getId())) {
viewHolder.mCustomCheckBoxFacilities.setChecked(true);
} else {
viewHolder.mCustomCheckBoxFacilities.setChecked(false);
}
}
viewHolder.mCustomCheckBoxFacilities.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
facilitiesList.add(Integer.valueOf(model.getId()));
} else {
facilitiesList.remove(Integer.valueOf(model.getId()));
}
}
});
}
};
您应该首先使用 for 循环创建您的请求字符串,然后将其发送到您的请求中。
你应该这样做。
String facilities="";
for (int i=0; i<facilitiesList.size(); i++){
if(i==0){
facilities=facilities+"facilities="+facilities.get(i);
}else{
facilities=facilities+"&facilities="+facilities.get(i);
}
}
需要 i==0
检查以停止在第一个 position.Try 上添加 & 符号 position.Try 这应该有效
我正在 volley 请求参数中发送一些键和值。我能够成功发送所有数据,但是,我想以这种格式发送其中一个 ArrayList
params.put("facilities", "facilities=1&facilities=3&facilities=7");
我以 1、3 和 7 为例这将包括 selected 并且在我的设施 ArrayList 中的元素。我在屏幕上有 8 个项目,如果我 select 4 那么 ArrayList 将包含 4 个项目但是如何以这种精确的参数格式发送?我也尝试了下面的代码,但它也没有用
for (int i=0; i<facilitiesList.size(); i++){
params.put("facilities", facilitiesList.get(i).toString());
}
我想以我在顶部显示的格式发送所有 selected 数据。任何人都知道如何解决这个问题?
编辑 - 我使用下面的代码select 项
private List<Integer> facilitiesList; ///initialization
private BaseRecyclerAdapter<FacilitiesApi.ApiResponse.Datum, FacilitiesViewHolder> mBaseRecyclerAdapter = new BaseRecyclerAdapter<FacilitiesApi.ApiResponse.Datum, FacilitiesViewHolder>(FacilitiesViewHolder.class, R.layout.layout_list_item_facilities) {
@Override
protected void populateViewHolder(final FacilitiesViewHolder viewHolder, final FacilitiesApi.ApiResponse.Datum model, final int position) {
viewHolder.mCustomCheckBoxFacilities.setText(model.getName());
if (facilitiesList != null) {
if (facilitiesList.contains(model.getId())) {
viewHolder.mCustomCheckBoxFacilities.setChecked(true);
} else {
viewHolder.mCustomCheckBoxFacilities.setChecked(false);
}
}
viewHolder.mCustomCheckBoxFacilities.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
facilitiesList.add(Integer.valueOf(model.getId()));
} else {
facilitiesList.remove(Integer.valueOf(model.getId()));
}
}
});
}
};
您应该首先使用 for 循环创建您的请求字符串,然后将其发送到您的请求中。 你应该这样做。
String facilities="";
for (int i=0; i<facilitiesList.size(); i++){
if(i==0){
facilities=facilities+"facilities="+facilities.get(i);
}else{
facilities=facilities+"&facilities="+facilities.get(i);
}
}
需要 i==0
检查以停止在第一个 position.Try 上添加 & 符号 position.Try 这应该有效