如何从服务器动态显示微调器中的名称

时间:2017-10-25 07:33:12

标签: android

嗨现在我正在动态地检索数据到微调器,但是现在它显示了一些id但是那些Id细节存储在其他表中,我希望在微调器中显示这些细节而不是id。如果我根据产品细节应该在列表中选择特定产品。

我正在使用Retrofit方法从服务器检索数据

package cfirst.live.com.activity;

public class Pos_outlet extends AppCompatActivity implements     RestCallback,View.OnClickListener{
Spinner spinner;

ArrayList<String> products;

String numberAsString, product_name;
int i;
private int cartProductNumber = 0;
String[] items;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pos_outlet);
    sharedPreference = new MySharedPreference(Pos_outlet.this);
    GsonBuilder builder = new GsonBuilder();
    gson = builder.create();
    initViews();

}

private void initViews() {

    row1 =(TableRow)findViewById(R.id.row1);

    spinner=(Spinner)findViewById(R.id.spinner);

    POSStoreID = (TextView) findViewById(R.id.POSStoreID);
    POSLocationID = (TextView) findViewById(R.id.POSLocationID);

    Intent intent = getIntent();
    id = intent.getStringExtra("id");
    index_id= intent.getStringExtra("index_id");
    callStoreDetaislsAPI();
    callSmbProductsAPI();
    getProductAPI();


}

//  **Using this api I'm setting id'd to spinner**

private void getProductAPI() {

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("store", index_id);
    Toast.makeText(getApplicationContext(),index_id, Toast.LENGTH_LONG).show();

    RestService.getInstance(Pos_outlet.this).getproductlist(map, new MyCallback<List<PosmultistoresModel>>(Pos_outlet.this,
            Pos_outlet.this, true, "Finding products....", GlobalVariables.SERVICE_MODE.GET_PRODUCTS));

}

// **this API have product Id's Details**

private void callSmbProductsAPI() {

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("index_id", product);
    //Toast.makeText(getApplicationContext(),added_by, Toast.LENGTH_LONG).show();
    RestService.getInstance(Pos_outlet.this).getSmbProduct(map, new MyCallback<List<PosSmbProductModel>>(Pos_outlet.this,
            Pos_outlet.this, true, "Fetching details....", GlobalVariables.SERVICE_MODE.SMB_PRODUCT));
}

@Override
public void onClick(View v) {
    switch(v.getId()) {


   case R.id.AddtoBasket:
       callPosProductsAPI();
       callSmbProductsAPI();
       break;
    }
}

@Override
public void onFailure(Call call, Throwable t, GlobalVariables.SERVICE_MODE mode) {
    //Toast.makeText(getApplication(),"failure",Toast.LENGTH_LONG).show();
}

@Override
public void onSuccess(Response response, GlobalVariables.SERVICE_MODE mode) {
    switch (mode) {

     //** I'm setting data to spinner **

         case GET_PRODUCTS:
            try {
                List<PosmultistoresModel> businessgroups = (List<PosmultistoresModel>) response.body();
                product_name = businessgroups.get(0).getProduct();
                List<PosmultistoresModel> list=null;
                for(i=0;i<businessgroups.size();i++)
                {
                    list=businessgroups;
                }
                items = new String[list.size()];
                for(int i=0; i<businessgroups.size(); i++){
                    //Storing names to string array
                    items[i] = list.get(i).getProduct();
                }
                ArrayAdapter<String> adapter1;
                adapter1 = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, items);
                //setting adapter to spinner
                spinner.setAdapter(adapter1);
            } catch (Exception e) {
                e.printStackTrace();
            }
            break;**

  // ** Product id details (title, image, etc) Api

        case SMB_PRODUCT:
        try {
            ArrayList<PosSmbProductModel> products = (ArrayList<PosSmbProductModel>) response.body();
            //Product_id = products.get(0).getProduct();

          //  for (int i = 0; i < products(); i++) {
                Title = products.get(0).getTitle();
                productname1.setText(Title);

                imageid12 = products.get(0).getMain_image();
                Picasso.with(this).load("https://www.consumer1st.in/pre_production/uploads/" + imageid12).into(imageid1);
            }
      //  }
        catch(Exception e)
            {
                e.printStackTrace();
            }

        break;
        }
    }
 }

1 个答案:

答案 0 :(得分:0)

我假设您的product_name = businessgroups.get(0).getProduct();正在获得产品。

首先请删除此部分

  product_name = businessgroups.get(0).getProduct();
            List<PosmultistoresModel> list=null;
            for(i=0;i<businessgroups.size();i++)
            {
                list=businessgroups;
            }
            items = new String[list.size()];
            for(int i=0; i<businessgroups.size(); i++){
                //Storing names to string array
                items[i] = list.get(i).getProduct();
            }

然后你可以尝试

ArrayList<String> productList = new ArrayList<>();

    for (int i = 0; i < businessgroups.size(); i++) {
        productList.add(businessgroups.get(i).getProduct());
    }

最后

adapter1 = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, productList);