简体   繁体   English

如何将Onclick侦听器设置为动态微调器项目

[英]How to set Onclick listener to dynamic spinner item

I have three spinners (1.Vehicle make, 2.Vehicle Type, 3.Model). 我有三个微调器(1.Vehicle make,2.Vehicle Type,3.Model)。 Vehicle make having only option "2 Wheeler","4 Wheeler". 车辆制造商仅具有选项“ 2 Wheeler”,“ 4 Wheeler”。

What i did, If i choosed anyone option from vehicle make means shows only that type of vehicle type(For ex: If i choose 2 Wheeler means Vehicle Type shows Bajaj,Honda etc., like this). 我做了什么,如果我从车辆制造方法中选择了任何一个选项,则仅显示该类型的车辆类型(例如:如果我选择2 Wheeler,则车辆类型显示Bajaj,Honda等)。

I want, If i choose anyone option from vehicle type means show that type of model in third spinner. 我想要,如果我从车辆类型中选择任何人,则表示在第三台微调器中显示该类型的模型。

I dont know how to access/change third spinner when second spinner selected. 选择第二个微调器时,我不知道如何访问/更改第三个微调器。

Please anyone help me! 请任何人帮助我!

My code here: 我的代码在这里:

 public class VehicleFragment extends Fragment { Spinner vehicleType; Spinner vehicleMake; Spinner model; String[] vehicleItems = {"Please Choose Vehicle Type","2 Wheeler","4 Wheeler"}; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_layout_vehicle, container, false); vehicleType = (Spinner)view.findViewById(R.id.veh_typeSpinner); vehicleMake = (Spinner)view.findViewById(R.id.makeSpinner); model = (Spinner)view.findViewById(R.id.modelSpinner); //VehicleType adapter ArrayAdapter vehicleAdapter = new ArrayAdapter(this.getActivity(),android.R.layout.simple_spinner_item,vehicleItems); vehicleAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); vehicleType.setAdapter(vehicleAdapter); vehicleType.setOnItemSelectedListener(new VehiclTypeSelectedListener()); return view; } public class VehiclTypeSelectedListener implements AdapterView.OnItemSelectedListener { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String item = parent.getItemAtPosition(position).toString(); if (item == "2 Wheeler"){ addItemOnVehicleMake(); } else if (item == "4 Wheeler"){ addItemOnFourVehicleMake(); } } @Override public void onNothingSelected(AdapterView<?> parent) { } } public void addItemOnVehicleMake(){ vehicleMake = (Spinner) getActivity().findViewById(R.id.makeSpinner); String[] myState = getResources().getStringArray(R.array.twoWheeler_make); List<String> makeArrayList = Arrays.asList(myState); ArrayAdapter dataAdapter = new ArrayAdapter(this.getActivity(), android.R.layout.simple_spinner_item, makeArrayList); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); vehicleMake.setAdapter(dataAdapter); } public void addItemOnFourVehicleMake(){ vehicleMake = (Spinner) getActivity().findViewById(R.id.makeSpinner); String[] myState = getResources().getStringArray(R.array.fourWheeler_make); List<String> makeArrayList = Arrays.asList(myState); ArrayAdapter dataAdapter = new ArrayAdapter(this.getActivity(), android.R.layout.simple_spinner_item, makeArrayList); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); vehicleMake.setAdapter(dataAdapter); } } 

Thanks in advance!! 提前致谢!!

获取布局的子级并检查微调框的实例,然后设置onClick侦听器。

When addItemOnVehicleMake() method called, at that time suppose "vehicleMake" spinner has vehicle make companies like, 当调用addItemOnVehicleMake()方法时,当时假设“ vehicleMake”微调器具有车辆制造公司之类的功能,

        Bajaj, 
        Honda,
        .
        . etc,

and inside addItemOnFourVehicleMake() method 4-wheeler has, 在四轮车的addItemOnFourVehicleMake()方法内部,

        Honda,
        Ford,
        .
        .. etc.

When populate spinner it always set first value from list by default unless we set different item position manually. 填充微调框时,除非我们手动设置其他项目位置,否则默认情况下始终始终从列表中设置第一个值。

If two wheeler has set Bajaj, get list of models of Bajaj and populate spinner of "VehicleMake" inside addItemOnVehicleMake() for the first item only.

            public void addItemOnVehicleMake()
            {
               ...
               ... 
               // code here to bind model spinner and set default "0" position item.
               model.setSelection(0);
            }

    Also write down the VehicleMake spinner item select listener method,to populate the "VehicleModel" spinner based on selected item in "VehicleMake" spinner.

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

                            //Here is the code to populate model spinner.
                        }

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

                        }
                    });

You need to populate your spinner at the time when say you choose "2 Wheeler". 当您说“ 2 Wheeler”时,您需要填充微调器。 For this you need to have data sets of vehicles that are 2 wheelers and a separate dataset for vehicles that are say 4 wheelers. 为此,您需要具有2个轮车的车辆数据集和4个轮车的单独数据集。 So basically in your addItemOnVehicleMake(String s) method, send your item string to this method: 因此,基本上在您的addItemOnVehicleMake(String)方法中,将您的商品字符串发送到此方法:

public void addItemOnFourVehicleMake(String vehicleType){
    if(vehicleType == "4 Wheeler"){
   //add dataset to spinner that shows only 4 wheelers.
}
else if(vehicleType == "2 Wheeler"){
   //add dataset to spinner that shows only 2 wheelers.
}
//and so on....
} 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM