Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change the position of a spinner according to position of other spinner in two different activities

I Have two android spinner dropdown in two differnt activity.But both spinner have same data from same sourec.I want to change in position of second Activity acording to position of first activity.How to resolve this issue ?.

Updated code:

First Activity:

public class ServiceRequest extends BaseActivity implements OnItemClickListener {
    private List<Item> customerList = new ArrayList<Item>();
    private SpinnerAdapter adapter;
    public static final String EXTRA_INTENT_CUSTOMER_LIST  ="extra_intent_customer_list";

    public static final String EXTRA_INTENT_SELECTED_ITEM = "extra_intent_selected_item";
    private List<Item> items;
    Spinner spin;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getLayoutInflater().inflate(R.layout.service_request, frameLayout);

       ;


    );
                    System.out.println("Selected item "    Button login = (Button) findViewById(R.id.booking);

        final String message = autoCompView.getText().toString();
        //Create the bundle


        login.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
{

                    if(customerList.isEmpty()) return;
                    Item selectedItem = (Item) spin.getSelectedItem();
                    spin.getSelectedItem().toString(+selectedItem);

              Intent intent = new Intent(ServiceRequest.this, Form.class);
//            intent.putExtra(EXTRA_INTENT_CUSTOMER_LIST, (Serializable) customerList);
                    intent.putExtra("seletedItem", selectedItem);
                    intent.putExtra(EXTRA_INTENT_SELECTED_ITEM, selectedItem);
                    startActivity(intent);
                }
            }

        });

        spin = (Spinner) findViewById(R.id.service_spinner);
        adapter = new SpinnerAdapter((ArrayList<Item>) customerList, this);
        spin.setAdapter(adapter);
    }


    public void onStart(){
        super.onStart();
        BackTask bt=new BackTask();
        bt.execute();
    }
    private class BackTask extends AsyncTask<Void,Void,ArrayList<Item>> {
        ArrayList<String> list;
        protected void onPreExecute(){
            super.onPreExecute();
            list=new ArrayList<>();
        }
        protected ArrayList<Item> doInBackground(Void... params) {
            InputStream is = null;
            String result = "";
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://my_url/Service.asmx/GetServiceList");
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                // Get our response as a String.
                is = entity.getContent();
            } catch (IOException e) {
                e.printStackTrace();
            }

            //convert response to string
            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"));
                String line = null;
                while ((line = reader.readLine()) != null) {
                    result += line;
                }
                is.close();
                //result=sb.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            // parse json data
            try {
                JSONArray jArray = new JSONArray(result);
                for (int i = 0; i < jArray.length(); i++) {
                    JSONObject obj = jArray.getJSONObject(i);
                    Item customer = new Item();
                    customer.setId(obj.getString("ServiceId"));
                    customer.setName(obj.getString("ServiceName"));

                    // adding movie to movies array
                    customerList.add(customer);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
//            adapter.notifyDataSetChanged();
            return null;
        }
        @Override
        protected void onPostExecute(ArrayList<Item> customerList) {
            if(customerList != null && !customerList.isEmpty()){
                adapter.updateDate(customerList);
            }
        }

    }}

Code of second activity

     public class Form extends BaseActivity {

    //    ArrayList<String> listItems = new ArrayList<>();
//    ArrayAdapter<String> adapter;
    private ArrayList<Item> customerList = new ArrayList<Item>();
    private SpinnerAdapter adapter;
    private List<Item> items;

    AdapterView.OnItemSelectedListener listener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getLayoutInflater().inflate(R.layout.activity_form, frameLayout);

        if(getIntent().hasExtra(ServiceRequest.EXTRA_INTENT_SELECTED_ITEM)){
            selectedItem = (Item)getIntent().getSerializableExtra(ServiceRequest.EXTRA_INTENT_SELECTED_ITEM);
        }


        service_need = (Spinner) findViewById(R.id.service_need);
        adapter = new SpinnerAdapter(customerList, this);
        service_need.setAdapter(adapter);
       /*  Commented by me
       if(selectedItem != null){
            service_need.setSelection(customerList.indexOf(selectedItem));
        }*/




        /*
        Commented for testing :Praveen
        Bundle bundle = getIntent().getExtras();
        String stuff1 = bundle.getString("local");*/
        autoCompView.setText("stuff1");
//        position = customerList.indexOf(bundle.getString("name"));
//        spin.setSelection(position);
//        adapter.notifyDataSetChanged();
//        adapter.notifyDataSetChanged();

//        String name = bundle.getString("name");
//        adapter.add(name);


    }

    public void onStart() {
        super.onStart();
        BackTask bt = new BackTask();
        bt.execute();
    }

    private class BackTask extends AsyncTask<Void, Void, ArrayList<Item>> {
        ArrayList<String> list;

        protected void onPreExecute() {
            super.onPreExecute();
//            list = new ArrayList<>();

        }

        protected ArrayList<Item> doInBackground(Void... params) {
            InputStream is = null;
            String result = "";
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://my_url/Service.asmx/GetServiceList");
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                // Get our response as a String.
                is = entity.getContent();
            } catch (IOException e) {
                e.printStackTrace();
            }

            //convert response to string
            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"));
                String line = null;
                while ((line = reader.readLine()) != null) {
                    result += line;
                }
                is.close();
                //result=sb.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            // parse json data
            try {
                JSONArray jArray = new JSONArray(result);
                for (int i = 0; i < jArray.length(); i++) {
                    JSONObject obj = jArray.getJSONObject(i);
                    Item customer = new Item();
                    customer.setId(obj.getString("ServiceId"));
                    customer.setName(obj.getString("ServiceName"));
                    customerList.add(customer);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
//            adapter.notifyDataSetChanged();
            return null;
        }

        @Override
        protected void onPostExecute(ArrayList<Item> customerList) {
            if(customerList != null && !customerList.isEmpty()){
                adapter.updateDate(customerList);
                if(selectedItem != null){
                    spin.setSelection(customerList.indexOf(selectedItem));
                }
            }
        }
    }


}

Model Class

public class Item implements Serializable {
    String id;
    String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Item item = (Item) o;

        if (getId() != item.getId()) return false;
        return getName().equals(item.getName());

    }
}

Adapeter class

public class SpinnerAdapter extends BaseAdapter {

    ArrayList<Item> categories = new ArrayList<>();
    Context mContext;

    public SpinnerAdapter(ArrayList<Item> categories, Context context){
        this.categories = categories;
        mContext = context;
    }

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

    @Override
    public Object getItem(int i) {
        return categories.get(i);
    }

    @Override
    public long getItemId(int i) {
        return categories.get(i).hashCode();
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        Item item = categories.get(i);
        ViewHolder holder = null;
        if(view == null){
            view = LayoutInflater.from(mContext).inflate(R.layout.spin_row, null);
            holder = new ViewHolder();
            holder.name = (TextView) view.findViewById(R.id.name);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }
        holder.name.setText(item.getName());
        return view;
    }

    static class ViewHolder{
        TextView name;
    }

}

JSON Response

[{"ServiceId":"1","ServiceName":"AC"},
{"ServiceId":"5","ServiceName":"Plumbing"},
{"ServiceId":"3","ServiceName":"Refrigerator"},
{"ServiceId":"7","ServiceName":"Appliances"},
{"ServiceId":"27","ServiceName":"Others"}]
like image 575
Adi Avatar asked Aug 13 '16 06:08

Adi


1 Answers

You can solve this problem using 2 topic.

  1. SharePrefernce

  2. Intent

SharePrefernce

Store the position of the array of Spinner .

Get the position and set to the Spinner it when you again using .

Example:-

For saving Or storing position into SharePrefernce.

int position = spin.getSelectedItemPosition() ;
PreferenceManager.getDefaultSharedPreferences(this).edit().putInt("position",position ).commit();

For getting or setting value from SharePrefernce to Spinner.

int position = PreferenceManager.getDefaultSharedPreferences(this).getInt("position", 0);
spin.setSelection(position);

Intent

Store the position of the array of Spinner in the intent.

Get the position and set to the Spinner it when you again using intent .

Example:-

For saving Or storing position into Intent.

int position = spin.getSelectedItemPosition() ;
Intent myIntent = new Intent(A.this, B.class);
myIntent.putExtra("position", position);
startActivity(myIntent);

For getting or setting value from Intent to Spinner.

Intent mIntent = getIntent();
int position = mIntent.getIntExtra("position", 0);
spin.setSelection(position);

This both are working .I already checked it.

like image 197
sushildlh Avatar answered Sep 24 '22 19:09

sushildlh