В счетчике я добавляю «цель я» и «имя цели» в ArrayList, а в счетчике отображаются «цель я» и «имя цели», но я хочу отображать только имя цели в счетчике

Private void displayspinnertarget () {

    final ArrayList<String> target = new ArrayList<String>();

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    JsonArrayRequest jsonArrayRequest= new JsonArrayRequest("http://54.146.132.94/webservices/target_allocated?parent_id="+ get_id +"&target_status=5",
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {



                        try {

                            for (int i = 0; i < response.length(); i++) {
                                JSONObject jsonObject = response.getJSONObject(i);
                                target.add(jsonObject.getString("target_id")+" . "+jsonObject.getString("target_name"));


                            }

                            /*ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(Behavior_data_create.this,
                                    android.R.layout.simple_spinner_item,target);

                            arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);*/
                            CustomAdapter_spinner customAdapter_spinner=new CustomAdapter_spinner(getApplicationContext(),target);


                            a4.setAdapter(customAdapter_spinner);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }



                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

            Toast.makeText(Behavior_data_create.this, ""+error.toString(), Toast.LENGTH_SHORT).show();

        }
    });
    requestQueue.add(jsonArrayRequest);

    a4.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            item= parent.getItemAtPosition(position).toString();
            t_id = item.substring(0,2).trim();
            Toast.makeText(Behavior_data_create.this, "" + item, Toast.LENGTH_SHORT).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

}

на этом изображении 2 - целевой идентификатор, а abc - целевое имя, поэтому я хочу только отображаемое имя здесь, и когда я нажимаю на элемент, мне понадобится идентификатор (означает, что номер 2)

Мой customadapter_spinner.class здесь:

Открытый класс CustomAdapter_spinner расширяет BaseAdapter {

Context context;
ArrayList<String> countryNames;
LayoutInflater inflter;

public CustomAdapter_spinner(Context applicationContext, ArrayList<String> countryNames) {
    this.context = applicationContext;
    this.countryNames = countryNames;
    inflter = (LayoutInflater.from(applicationContext));
}

@Override
public int getCount() {
    return countryNames.size();
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    convertView = inflter.inflate(R.layout.custom_spinner_items, null);
    TextView names = (TextView) convertView.findViewById(R.id.textView);
    names.setText(countryNames.get(position));
    return convertView;
}

}

0
Adil Siddiqui 17 Сен 2018 в 10:57

2 ответа

Лучший ответ

Сначала сделайте свой список таким, как

final ArrayList<Target> target = new ArrayList<Target>();

Затем создайте класс POJO для ваших целевых данных

public class Target {

      private String targetId;
      private String targetName;

      public void setTargetId(String targetId){
         this.targetId = targetId;      
      }

      public String getTargetId(){
         return targetId;
      }

      public void setTargetName(String targetName){
         this.targetName= targetName;      
      }

      public String getTargetName(){
         return targetName;
      }

}

Затем внутри вашего цикла

for (int i = 0; i < response.length(); i++) {
    JSONObject jsonObject = response.getJSONObject(i);

    Target targetObject = new Target();
    targetObject.setTargetId(jsonObject.getString("target_id"));
    targetObject.setTargetName(jsonObject.getString("target_name"));        

    target.add(targetObject);
}

Затем внутри метода getView () вашего класса CustomAdapter_Spinner получите только целевое имя, например

@Override
public View getView(int position, View convertView, ViewGroup parent) {

convertView = inflter.inflate(R.layout.custom_spinner_items, null);
TextView names = (TextView) convertView.findViewById(R.id.textView);
names.setText(countryNames.get(position).getTargetName());
return convertView;
}

И все готово. Надеюсь это поможет.

1
AIK 17 Сен 2018 в 09:10

Вместо String целью должен быть объект с идентификатором и именем. Затем внутри адаптера вам просто нужно отобразить имя

1
Bruno 17 Сен 2018 в 08:31