簡體   English   中英

如何在微調器中隱藏項目的ID?

[英]how to hide the i'd of the item in the spinner?

在微調器中,我在ArrayList中添加了“ target I'd”和“ target name”,在微調器中,同時顯示了“ target I'd”和“ target name”,但我只想在微調器中顯示目標名稱

私人無效的displaypinnertarget(){

    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是目標ID,而abc是目標名稱,所以我只想在這里顯示名稱,當我單擊該項目時,我需要ID(表示數字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;
}

}

目標必須是帶有ID和名稱的Object而不是String 然后,在適配器內部,只需顯示名稱

首先讓您的清單采用類似

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);
}

然后在CustomAdapter_Spinner類的getView()方法中,僅獲取目標名稱,例如

@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;
}

您完成了。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM