Android 如何使用ArrayList为微调器制作ArrayAdapter<;Hashmap<;字符串,字符串>&燃气轮机;()

Android 如何使用ArrayList为微调器制作ArrayAdapter<;Hashmap<;字符串,字符串>&燃气轮机;(),android,android-spinner,Android,Android Spinner,我刚刚与arraylist建立了连接,但我想在spinner中显示它。我已经用recyclerview完成了,但这次我只想在微调器适配器中显示字符串“kode”(ITEMDATA0),在从微调器中选择字符串“kode”后,其余数据(nama、sp1、sp2等)将显示在微调器下的edittext中。以下是我的表单布局: 这是我的节目: private void showItem(){ list.clear(); JSONObject jsonObject = null; //A

我刚刚与arraylist建立了连接,但我想在spinner中显示它。我已经用recyclerview完成了,但这次我只想在微调器适配器中显示字符串“kode”(ITEMDATA0),在从微调器中选择字符串“kode”后,其余数据(nama、sp1、sp2等)将显示在微调器下的edittext中。以下是我的表单布局:

这是我的节目:

private void showItem(){
   list.clear();
   JSONObject jsonObject = null;
   //ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String, String>>();
   try {
       jsonObject = new JSONObject(JSON_STRING);
       JSONArray result = jsonObject.getJSONArray(Item_Konfigurasi.TAG_JSON_ARRAY);

       for(int i = 0; i<result.length(); i++){
           JSONObject jo = result.getJSONObject(i);
           final String id = jo.getString(Item_Konfigurasi.TAG_ITEMXCODE);
           final String kode = jo.getString(Item_Konfigurasi.TAG_ITEMDATA0);
           final String nama = jo.getString(Item_Konfigurasi.TAG_ITEMDATA1);
           final String sp1 = jo.getString(Item_Konfigurasi.TAG_ITEMDATA2);
           final String sp2 = jo.getString(Item_Konfigurasi.TAG_ITEMDATA3);
           final String ket = jo.getString(Item_Konfigurasi.TAG_ITEMDATA4);

           HashMap<String,String> item = new HashMap<>();
           item.put(Item_Konfigurasi.TAG_ITEMXCODE,id);
           item.put(Item_Konfigurasi.TAG_ITEMDATA0,kode);
           item.put(Item_Konfigurasi.TAG_ITEMDATA1,nama);
           item.put(Item_Konfigurasi.TAG_ITEMDATA2,sp1);
           item.put(Item_Konfigurasi.TAG_ITEMDATA3,sp2);
           item.put(Item_Konfigurasi.TAG_ITEMDATA4,ket);

           list.add(item);
       }

       //THIS WILL BE THE PLACE FOR CUSTOM SPINNER ADAPTER

       /*CustomAdapter mAdapter = new CustomAdapter(Transaksi_Add.this,
               R.layout.listspinnertransaksi_layout, R.id.title, list);
       mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));
       mRecyclerView.setAdapter(mAdapter);*/

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

private void getJSON(){
   class GetJSON extends AsyncTask<Void,Void,String> {

       ProgressDialog loading;
       @Override
       protected void onPreExecute() {
           super.onPreExecute();

       }

       @Override
       protected void onPostExecute(String s) {
           super.onPostExecute(s);

           JSON_STRING = s;
           showItem();
       }

       @Override
       protected String doInBackground(Void... params) {
           RequestHandler rh = new RequestHandler();
           String s = rh.sendGetRequest(Item_Konfigurasi.URL_GET_ALL);
           return s;
       }
   }
   GetJSON gj = new GetJSON();
   gj.execute();
}
private void showItem(){
list.clear();
JSONObject JSONObject=null;
//ArrayList=新建ArrayList();
试一试{
jsonObject=新的jsonObject(JSON_字符串);
JSONArray result=jsonObject.getJSONArray(Item\u Konfigurasi.TAG\u JSON\u数组);
对于(int i=0;i?同时,我只希望数组中的6个数据中的1个显示在微调器中(kode/ITEMDATA0)


编辑:哦,是的,我使用了ArrayList>,它必须与ArrayList不同,对吗?

要创建自定义微调器,必须创建自定义适配器。
因此,您必须为自己的适配器创建一个类,并从
ArrayAdapter
扩展
您还需要为每个微调器项目创建一个布局,因此您应该为微调器项目创建一个
布局。
设计布局并制作微调器项后,必须转到适配器类并重写
getview
方法。在此方法中,应返回视图对象。
适配器类的伪代码如下:

public class adapter extends ArrayAdapter<OBJECT MUST BE SHOW IN SPINNER>{

public adapter(@NonNull Context context , @NonNull List objects) 
{
    super(context, R.layout.YOUR CUSTOM LAYOUT , objects);
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) 
{
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(YOUR CUSTOM LAYOUT , null , false);

    //you can fill you'r view item according to list of object and position 

    return convertView;
}}
公共类适配器扩展了ArrayAdapter{
公共适配器(@NonNull上下文,@NonNull列表对象)
{
super(上下文,R.layout.YOUR自定义布局,对象);
}
@非空
@凌驾
公共视图getView(int位置,@Nullable视图convertView,@NonNull视图组父级)
{
LayoutInflater充气器=(LayoutInflater)getContext().getSystemService(Context.LAYOUT\u充气器\u SERVICE);
convertView=充气机。充气(自定义布局,null,false);
//您可以根据对象和位置列表填写您的视图项
返回视图;
}}

完成此类后,可以将此适配器用于微调器。首先声明
ArrayList
字符串:-

ArrayList<String> label = new ArrayList<String>();
3.第三次设置spinnerview
setOnItemSelectedListener
,然后选择以获取标签

spinnerview.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

                int selected_item_position = spinnerview.getSelectedItemPosition();
                String selected = label.get(selected_item_position);
                Log.e("selected_name", "" +selected);

            }
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
            }
        });
spinnerview.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
int selected_item_position=spinnerview.getSelectedItemPosition();
所选字符串=label.get(所选项目位置);
Log.e(“选定的名称”,“选定的+”);
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
});

请按照此查询@Dioo B是可搜索的spinner第三方库,您可以在
AutoCompleteTextView
@Prathik中使用它。如果我是新来的,很抱歉,但我需要更具体的答案来只显示“kode”(ITEMDATA0)为了在微调器中显示,同时我还有5个数据。@AndroidPlayer很酷,我稍后会尝试,在我完成后,这看起来很好。.我不知道如何进行改装,我只是在我的活动中进行改装,但有一个问题…如果我使用ArrayList,如何使ArrayAdapter。.在你的ArrayList中,它只是ArrayList。.你只是创建了不同的ArrayList like ArrayList id=new ArrayList();ArrayList kode=new ArrayList();ArrayList nama=new ArrayList();etc…并在for循环中添加数据,您可以使用所有数据,但如何使用?因为我必须使用arraylist hashmap从连接到数据库mysql的其他活动中获取数据。或者我必须更改hashmap,或者只是添加更多arraylist以将其放入spinner?您可以使用模型类arraylist arraylist=new arraylist();对不起,我很抱歉,我已经编辑了我的问题..如果我使用ArrayList..有没有什么捷径可以让ArrayAdapter成为Spinner的微调器..?不客气。测试此代码:“Spinner.setAdapter(new ArrayAdapter(){NonNull Override public View getView(int-position,View-convertView,ViewGroup-parent){return super.getView(position,convertView,parent);}}}});“我没有尝试过这段代码,但我认为它是有效的
spinnerview.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

                int selected_item_position = spinnerview.getSelectedItemPosition();
                String selected = label.get(selected_item_position);
                Log.e("selected_name", "" +selected);

            }
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
            }
        });