【问题标题】:How to select spinner in dropdown to perform edit operation?如何在下拉列表中选择微调器以执行编辑操作?
【发布时间】:2018-02-05 15:56:18
【问题描述】:

我想知道如何选择微调器来执行编辑操作。设置文本后我只得到文本,但我没有选择微调器来执行更新操作。我已经在列表中添加了数据并想要更新数据。所以三个微调器在那里。所以我无法将微调器数据设置为编辑。

        //party_Adater

            @Override
            public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

                v = LayoutInflater.from (parent.getContext ())
                        .inflate (R.layout.item,parent,false);
                return new ViewHolder (v);


            }

            @Override
            public void onBindViewHolder(ViewHolder holder, final int position) {

                final Item item = itemList.get (position);


                holder.party_id.setText (item.getPartyId ());
                holder.party_name.setText (item.getPartyName ());
                holder.party_cat.setText (item.getPartyCategory ());
                holder.party_add.setText (item.getAddressLine1 ());
                holder.party_count.setText (item.getCountry ());
                holder.party_state.setText (item.getState ());
                holder.party_city.setText (item.getCity ());
                holder.party_pin.setText (item.getPostalCode ());
                holder.party_add2.setText (item.getAddressLine2 ());
                holder.party_type.setText (item.getPartyType ());



                holder.itemView.setOnClickListener (new View.OnClickListener ( ) {
                    @Override
                    public void onClick(View view) {
                        //final String id = item.getPartyId ();
                        goToUpdateActivity (item);

                    }
                });


            }

            private void goToUpdateActivity(Item item) {
                Intent intent = new Intent (context, MainInfoActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.putExtra ("Party_id", item.getPartyId ());
                intent.putExtra ("party_name",item.getPartyName ());
                intent.putExtra ("party_cat",item.getPartyCategory ());
                intent.putExtra ("party_add",item.getAddressLine1 ());
                intent.putExtra ("party_add2",item.getAddressLine2 ());
                intent.putExtra ("party_count",item.getCountry ());
                intent.putExtra ("party_state",item.getState ());
                intent.putExtra ("party_city", item.getCity ());
                intent.putExtra ("party_pin",item.getPostalCode ());
                intent.putExtra ("party_type",item.getPartyType ());
                context.startActivity (intent);
            }

        //Maininfoactivity

        //here I am getting text value but not getting Spinner Value to update

       //I am getting value from party adapter here

          Intent g = getIntent ();
                receivedPartyId =  g.getStringExtra ("party_id");
                abc = g.getStringExtra ("party_name");
               CompanyInputName.setText (abc);
                CompanyInputAddress.setText (g.getStringExtra ("party_add"));
                CompanyInputPincode.setText (g.getStringExtra ("party_pin"))

         String abcd = g.getStringExtra ("party_count");
                SpinnerCountry.setSelection(((ArrayAdapter<String>)SpinnerCountry.getAdapter()).getPosition(abcd));

    // Maininfoactivity


                package com.example.jjjj.dashboard.app;


import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.RetryPolicy;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.basgeekball.awesomevalidation.AwesomeValidation;
import com.basgeekball.awesomevalidation.ValidationStyle;
import com.example.jjjj.dashboard.R;
import com.example.jjjj.dashboard.model.Category_Model;
import com.example.jjjj.dashboard.model.CityObject;
import com.example.jjjj.dashboard.model.CountryObject;
import com.example.jjjj.dashboard.model.StateObject;
import com.toptoche.searchablespinnerlibrary.SearchableSpinner;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class MainInfoActivity extends AppCompatActivity {

    private RequestQueue mrequestQueue;
    private ArrayList <CountryObject> country_list = new ArrayList <> ();
    private ArrayList <Category_Model> categoryList = new ArrayList <> ();
    private ArrayList <StateObject> state_List = new ArrayList <> ();
    private ArrayList <CityObject> city_List = new ArrayList <CityObject> ();
    ArrayAdapter <CountryObject> CountryAdapter;
    ArrayAdapter<StateObject> StateAdapter;
    ArrayAdapter<Category_Model> category_modelArrayAdapter;
    ArrayAdapter <CityObject> cityObjectArrayAdapter;
    private AwesomeValidation awesomeValidation;
    String receivedPartyId, abc;
    int  spinnerpostion;


    private static final String TAG = MainInfoActivity.class.getName ( );



    EditText CompanyInputName, CompanyInputAddress, CompanyInputPincode;
    TextInputLayout CompanyInputLayoutName, CompanyInputLayoutAddress, CompanyInputLayoutPincode;
    SearchableSpinner SpinnerCat, SpinnerCountry, SpinnerState, SpinnerCity;
    Button Next_btn;

    private String url = "";
    private String url1 = "";
    private String url2 = "";
    private String url3 = "";
    public String url4 = "";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.maininformation);

        getSupportActionBar ().setDisplayHomeAsUpEnabled (true);

        //getSupportActionBar ().setTitle(CompanyInputName.setText ("abc"));





        awesomeValidation = new AwesomeValidation (ValidationStyle.BASIC);
        CompanyInputLayoutName = (TextInputLayout) findViewById (R.id.company_input_layout_name);
        CompanyInputLayoutAddress = (TextInputLayout) findViewById (R.id.company_input_layout_address);
        CompanyInputLayoutPincode = (TextInputLayout) findViewById (R.id.company_input_layout_pincode);

        CompanyInputName = (EditText) findViewById (R.id.company_input_name);
        CompanyInputAddress = (EditText) findViewById (R.id.company_input_address);
        CompanyInputPincode = (EditText) findViewById (R.id.company_input_pincode);

        awesomeValidation.addValidation (this, R.id.company_input_name, "(?:\\s*[a-zA-Z0-9,_\\.\\077\\0100\\*\\+\\&\\#\\'\\~\\;\\-\\!\\@\\;]{2,}\\s*)*", R.string.companynameerror);
        awesomeValidation.addValidation (this, R.id.company_input_address, "(?:\\s*[a-zA-Z0-9,_\\.\\077\\0100\\*\\+\\&\\#\\'\\~\\;\\-\\!\\@\\;]{2,}\\s*)*", R.string.addresserror);
        awesomeValidation.addValidation (this, R.id.company_input_pincode, "^\\d{6}$", R.string.pincodeerror);

        SpinnerCat = findViewById (R.id.spinner_cat);
        SpinnerCountry = findViewById (R.id.spinner_country);
        SpinnerState = findViewById (R.id.spinner_state);
        SpinnerCity = findViewById (R.id.spinner_city);

        Intent g = getIntent ();
        receivedPartyId =  g.getStringExtra ("party_id");
        abc = g.getStringExtra ("party_name");
       CompanyInputName.setText (abc);
        CompanyInputAddress.setText (g.getStringExtra ("party_add"));
        CompanyInputPincode.setText (g.getStringExtra ("party_pin"));

      String abcd = g.getStringExtra ("party_count");
        try {

            for (int x = 0; x < SpinnerCountry.getAdapter().getCount(); x++) {
                if ((SpinnerCountry.getItem(x)).equalsIgnoreCase(abcd)) {
                    SpinnerCountry.setSelection(((ArrayAdapter<String>)SpinnerCountry.getAdapter()).getPosition("party_count"));
                    break;
                }
            }

        } catch (Throwable e) {

        }






        Next_btn = findViewById (R.id.btn_move);

        Next_btn.setOnClickListener (new View.OnClickListener ( ) {

            @Override
            public void onClick(View view) {

                //NextActivity ( );

                if (view == Next_btn) {
                    NextActivity ( );
                }


            }



            private void NextActivity() {

                mrequestQueue = Volley.newRequestQueue (MainInfoActivity.this);
                StringRequest stringRequest = new StringRequest (Request.Method.POST, url4, new Response.Listener <String> ( ) {
                    @Override
                    public void onResponse(String response) {


                        Log.i(TAG,"Response: "+response);

                        if (awesomeValidation.validate ()) {

                            try {
                                JSONObject jsonObject = new JSONObject (response);
                                String p = (String) jsonObject.get ("partyId");
                                Intent intent = new Intent (getApplicationContext (),ContactActivity.class);
                                intent.putExtra ("c",p);
                                startActivity (intent);
                                Toast.makeText (MainInfoActivity.this, response.toString (),Toast.LENGTH_LONG).show ();


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


                        }

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

                        Toast.makeText (getApplicationContext (),"Failure",Toast.LENGTH_LONG).show ();

                    }
                }) {
                    @Override
                    protected Map <String, String> getParams() throws AuthFailureError {
                        CountryObject countryObject = (CountryObject) SpinnerCountry.getSelectedItem ();
                        StateObject stateObject = (StateObject) SpinnerState.getSelectedItem ();
                        Category_Model categoryModel = (Category_Model) SpinnerCat.getSelectedItem ();
                        CityObject cityObject = (CityObject) SpinnerCity.getSelectedItem ();
                        Map<String, String> params = new HashMap <> ();
                        params.put ("partyId", "");
                        params.put ("createdBy", "");
                        params.put ("partyName",CompanyInputName.getText().toString ());
                        params.put ("partyType","Supplier");
                        params.put ("partyCategory",categoryModel.getCategoryName ());
                        params.put ("addressLine1",CompanyInputAddress.getText ().toString ());
                        params.put ("addressLine2","");
                        params.put ("city", String.valueOf (cityObject.getCityid ()));
                        params.put ("state", String.valueOf (stateObject.id));
                        params.put ("country", String.valueOf (countryObject.id));
                        params.put ("postalCode",CompanyInputPincode.getText ().toString ());
                        params.put ("aboutcompany","");

                        return params;
                    }
                };

                stringRequest.setRetryPolicy(new DefaultRetryPolicy(  10*1000, 0,
                        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

                //int socketTimeout = 500;
                //RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
                //stringRequest.setRetryPolicy(policy);
                mrequestQueue.add (stringRequest);

            }
        });

        getCountry ( );
        loadcat();

        SpinnerState.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener ( ) {
            @Override
            public void onItemSelected(AdapterView <?> parent, View view, int pos, long l) {


                StateObject selected_state = (StateObject) parent.getSelectedItem ( );
                int cid = selected_state.id;
                city_List.clear ( );
                loadCity (cid);
            }



            private void loadCity(final int cid) {

                mrequestQueue = Volley.newRequestQueue (MainInfoActivity.this);
                StringRequest stringRequest = new StringRequest (Request.Method.POST, url3, new Response.Listener <String> ( ) {
                    @Override
                    public void onResponse(String response) {



                        try {

                            JSONObject jsonObject = new JSONObject (response);

                            JSONArray jsonArray = jsonObject.getJSONArray ("cityList");
                            Log.i (TAG, "Response : "+ jsonArray.toString ());
                            for (int p = 0; p<jsonArray.length (); p++) {
                                JSONObject feedobj3 = (JSONObject) jsonArray.get (p);
                                //int cid = feedobj3.getInt ("id");
                                CityObject cityObject = new CityObject ();
                                cityObject.setCityid (feedobj3.getInt ("cityid"));
                                cityObject.setCityname (feedobj3.getString ("cityname"));
                                city_List.add (cityObject);


                            }




                           cityObjectArrayAdapter  = new ArrayAdapter <> (MainInfoActivity.this, android.R.layout.simple_spinner_dropdown_item, city_List);
                            cityObjectArrayAdapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
                            SpinnerCity.setAdapter (cityObjectArrayAdapter);

                        } catch (JSONException e){

                            e.printStackTrace ();
                        }


                    }
                }, new Response.ErrorListener ( ) {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.i (TAG, "Response: "+ error.toString ());

                    }
                }

                ) {

                    @Override
                    protected Map <String, String> getParams() {
                        Map <String, String> map = new HashMap <> ();
                        map.put ("stateid",String.valueOf (cid));
                        return map;
                    }
                };
                int socketTimeout = 2000;
                RetryPolicy policy = new DefaultRetryPolicy (socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
                stringRequest.setRetryPolicy(policy);
                mrequestQueue.add (stringRequest);
            }




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

            }
        });

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


                    CountryObject selected_country = (CountryObject) adapterView.getSelectedItem ( );

                    int pid = selected_country.id;
                    loadState (pid);
                }


            private void loadState(final int pid) {

                mrequestQueue = Volley.newRequestQueue (MainInfoActivity.this);
                StringRequest stringRequest = new StringRequest (Request.Method.POST, url2, new Response.Listener <String> () {
                    @Override
                    public void onResponse(String response) {

                        try {

                            JSONObject jsonObject = new JSONObject (response);
                            JSONArray jsonArray = jsonObject.getJSONArray ("stateList");
                            state_List.clear ();
                            Log.i (TAG, "Response : "+ jsonArray.toString ());
                            for (int k = 0; k<jsonArray.length (); k++) {
                                JSONObject stateobj = (JSONObject) jsonArray.get (k);
                                StateObject stateObject = new StateObject ();
                                stateObject.setStateName (stateobj.getString ("stateName"));
                                stateObject.setId (stateobj.getInt ("id"));
                                state_List.add (stateObject);

                            }

                            StateAdapter = new ArrayAdapter <> (MainInfoActivity.this, android.R.layout.simple_spinner_dropdown_item, state_List);
                            StateAdapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
                            SpinnerState.setAdapter (StateAdapter);

                        } catch (JSONException e){

                            e.printStackTrace ();
                        }


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

                        Log.i (TAG, "Response: "+ error.toString ());


                    }
                }

                ) {

                    @Override
                    protected Map <String, String> getParams() {
                        Map <String, String> params = new HashMap <> ();
                        params.put ("countryid",String.valueOf (pid));
                        return params;
                    }
                };
                int socketTimeout = 2000;
                RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
                stringRequest.setRetryPolicy(policy);

                mrequestQueue.add (stringRequest);


            }

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

            }
        });

        }

    private void loadcat() {



            mrequestQueue = Volley.newRequestQueue (this);
          StringRequest  stringRequest = new StringRequest (Request.Method.GET, url1, new Response.Listener <String> ( ) {
                @Override
                public void onResponse(String response) {

                    try {

                        JSONObject jsonObject = new JSONObject (response);
                        JSONArray jsonArray = jsonObject.getJSONArray ("CustomerCategoryList");
                        Log.i (TAG, "Response : "+ jsonArray.toString ());
                        for (int j = 0; j<jsonArray.length (); j++) {
                            JSONObject feedobj1 = (JSONObject) jsonArray.get (j);
                            //categoryList.add (feedobj1.getString ("categoryName"));

                            Category_Model category_model = new Category_Model ();
                            category_model.setId (feedobj1.getInt ("id"));
                            category_model.setCategoryName (feedobj1.getString ("categoryName"));

                            categoryList.add (category_model);

                        }

                        category_modelArrayAdapter = new ArrayAdapter <> (MainInfoActivity.this, android.R.layout.simple_spinner_dropdown_item, categoryList);
                        category_modelArrayAdapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
                        SpinnerCat.setAdapter (category_modelArrayAdapter);
                    } catch (JSONException e){
                        e.printStackTrace ();
                    }

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

                    Log.i (TAG, "Response: "+ error.toString ());

                }
            });
           int socketTimeout = 2000;
           RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
           stringRequest.setRetryPolicy(policy);
           mrequestQueue.add (stringRequest);
        }

    private void getCountry() {

        mrequestQueue = Volley.newRequestQueue (this);
        StringRequest stringRequest = new StringRequest (Request.Method.GET,url, new Response.Listener <String> ( ) {
            @Override
            public void onResponse(String response) {


                try {
                   JSONObject jsonObject = new JSONObject (response);
                    JSONArray jsonArray = jsonObject.getJSONArray ("countryList");
                    Log.i (TAG, "Response : "+ jsonArray.toString ());
                    for (int i = 0; i<jsonArray.length (); i++) {
                        JSONObject feedobj = (JSONObject) jsonArray.get (i);
                        CountryObject item = new CountryObject ();
                        item.setId (feedobj.getInt ("id"));
                        item.setCountryName (feedobj.getString ("countryName"));
                        country_list.add (item);

                    }
                    CountryAdapter = new ArrayAdapter <> (MainInfoActivity.this, android.R.layout.simple_spinner_dropdown_item, country_list);
                    CountryAdapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);
                    SpinnerCountry.setAdapter (CountryAdapter);


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

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

                Toast.makeText (getApplicationContext (),"Response Code", Toast.LENGTH_LONG).show ();

            }
        });
        int socketTimeout = 2000;
        RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
        stringRequest.setRetryPolicy(policy);
        mrequestQueue.add (stringRequest);
    }

    @Override
    public void onBackPressed() {


        super.onBackPressed ( );
    }
}

【问题讨论】:

  • 试试这个 ySpinner.post(new Runnable() { @Override public void run() { mySpinner.setSelection(position); } });
  • 这里对我来说一切正常!在代码中!检查我的答案!

标签: android


【解决方案1】:

我在应用程序代码中没有发现其他错误! 也许解决方案可以是这样的:

为微调器提供单独的可运行进程将解决参考检查问题this

SpinnerCountry.post(new Runnable() {
        @Override
        public void run() {
            SpinnerCountry.setSelection(((ArrayAdapter<String>)SpinnerCountry.getAdapter()).getPosition(abcd));
        }
    });

如果这不起作用,那么我会建议您首先检查您要求的值的适配器是否拥有其中的值,然后像这样设置它

String abcd = g.getStringExtra ("party_count");
for (int x = 0; x < SpinnerCountry.getAdapter().getCount(); x++) {
            if ((SpinnerCountry.getItemAtPosition(x)).equalsIgnoreCase(abcd)) {
              SpinnerCountry.setSelection(((ArrayAdapter<String>)SpinnerCountry.getAdapter()).getPosition("party_count"));
                break;
            }
        }

注意! set selection 是一种将项目放在 spinner View 顶部的方法,从提供给 spinner 的数组中已有的项目中。

根据您的情况,我不认为您已经在微调器中填充了任何数组。

see this to fill spinner with xml array

attaching an arrayAdapter to Spinner using java

既然你说你有一个列表来填写你的微调器那么这里就是你应该一步一步做的事情。

  • 1: 确保您在 java 中设置了字符串列表 注册微调器
  • 2:查找该列表是否包含从您的 getIntent 的 StringExtra
  • 3:如果是这样,则更新列表并使该项目成为 列表中的顶部项目,然后将该列表附加到数组中 适配器并将该适配器设置在微调器上

【讨论】:

  • 还是不一样
  • 你能详细说明这个错误吗?我的意思是如果它崩溃或在日志中说什么?
  • 先生,我已经更新了我发送到后端以执行创建操作的代码,请参阅我的代码。
  • 我仍然无法获得价值。我也使用了上述逻辑
  • Operation == cannot be applied long java.lang String....得到这个错误
【解决方案2】:

SpinnerCountry.setSelection(((ArrayAdapter)SpinnerCountry.getAdapter()).getPosition("party_count"));

我认为一切正常,只需在 SpinnerCountry.setSelection(x) 中传递 x;

【讨论】:

  • for (int x = 0; x
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2018-07-15
  • 2016-06-02
  • 1970-01-01
  • 2023-02-21
  • 2015-03-25
相关资源
最近更新 更多