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

8

14

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"}]
Thrombocyte answered 13/8, 2016 at 6:27 Comment(1)
the most important question would be, ARE you getting your intent data correctly in the 2nd activity? is position the one you want.Emmanuel
T
4

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.

Transported answered 17/8, 2016 at 6:6 Comment(5)
set spin.setSelection(position); instead of this in your code spin.setSelection(position, false);Transported
please use setContentView(R.layout.service_request); instead of this getLayoutInflater().inflate(R.layout.service_request, frameLayout);Transported
int position = spin.getSelectedItemPosition() ; line have null point exceptionThrombocyte
Using setContentView,There will be some issue with my navigation drawer..Thrombocyte
Let us continue this discussion in chat.Thrombocyte
O
3
private List<Item> customerList = new ArrayList<Item>();

Customer list is the list of data model "Item", a pojo class.

position = customerList.indexOf(bundle.getString("name")); 

In this line you are trying to get index of selected item by passing string. Array list will not be able to compare two different type of object. You have to pass a "item" instance : position = customerList.indexOf(item);

And you have to override "equals" methods in Item class using some unique properties of the class. This equals method will be used to compare two object and list will return index of object if present in the list. Please check this and this for clarification.

Data Modal class

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

public int getId() {
    return id;
}

public void setId(int 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());

}

}

Activity class

 package spinner.sample.spinnerexample;

 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.widget.Spinner;

 import java.util.ArrayList;

 public class MainActivity extends AppCompatActivity {

private Spinner spinner;
ArrayList<Item> customerList = new ArrayList<>();
SpinnerAdapter spinnerAdapter;
public static final String EXTRA_INTENT_CUSTOMER_LIST  ="extra_intent_customer_list";

public static final String EXTRA_INTENT_SELECTED_ITEM = "extra_intent_selected_item";

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    spinner = (Spinner)findViewById(R.id.spinner);
    createList();
    spinnerAdapter = new SpinnerAdapter(customerList, this);
    spinner.setAdapter(spinnerAdapter);
}


private void createList(){

    Item item1 = new Item();
    item1.setId(14);
    item1.setName("Automobile");

    Item item2 = new Item();
    item2.setId(15);
    item2.setName("Business Services");

    Item item3 = new Item();
    item3.setId(16);
    item3.setName("Business");


    Item item4 = new Item();
    item4.setId(17);
    item4.setName("Computers");


    Item item5 = new Item();
    item5.setId(18);
    item5.setName("Computers Acc");

    Item item6 = new Item();
    item6.setId(19);
    item6.setName("Education");

    Item item7 = new Item();
    item7.setId(20);
    item7.setName("Personal");

    customerList.add(item1);
    customerList.add(item2);
    customerList.add(item3);
    customerList.add(item4);
    customerList.add(item5);
    customerList.add(item6);
    customerList.add(item7);

}

public void onClick(View view){
    if(customerList.isEmpty()) return;
    Item selectedItem = (Item) spinner.getSelectedItem();
    System.out.println("Selected item "+selectedItem);

    Intent intent = new Intent(this, SecondActivity.class);
    intent.putExtra(EXTRA_INTENT_CUSTOMER_LIST, customerList);
    intent.putExtra(EXTRA_INTENT_SELECTED_ITEM, selectedItem);
    startActivity(intent);
}

}

Activity 2

     package spinner.sample.spinnerexample;

        import android.os.Bundle;
        import android.support.v7.app.AppCompatActivity;
        import android.widget.Spinner;

        import java.util.ArrayList;

        public class SecondActivity extends AppCompatActivity {

        private Spinner spinner;
        ArrayList<Item> customerList = new ArrayList<>();
        SpinnerAdapter spinnerAdapter;
        Item selectedItem;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        if(getIntent().hasExtra(MainActivity.EXTRA_INTENT_CUSTOMER_LIST)){
            customerList = (ArrayList<Item>) getIntent().getSerializableExtra(MainActivity.EXTRA_INTENT_CUSTOMER_LIST);
        }

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


        spinner = (Spinner)findViewById(R.id.spinner);

        if(customerList.isEmpty()) return;
        spinnerAdapter = new SpinnerAdapter(customerList, this);
        spinner.setAdapter(spinnerAdapter);
        if(selectedItem != null){
            spinner.setSelection(customerList.indexOf(selectedItem));
        }
    }
}

Adapter :

        package spinner.sample.spinnerexample;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;

/**
 * Created by praveen on 17/8/16.
 */

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.spinner_item, null);
            holder = new ViewHolder();
            holder.name = (TextView) view.findViewById(R.id.txt_view_spinner_item);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }
        holder.name.setText(item.getName());
        return view;
    }

    static class ViewHolder{
        TextView name;
    }

}
Overstay answered 17/8, 2016 at 13:21 Comment(16)
I have given hard coded data as only for demo purpose.Overstay
In your case data source is server but data in both activity is same. You are parsing the date in model class named "Item". spinner in both activity has data source is list of "items". You have not implemented in any comparing logic in your "Item" class. so the line "customerList.indexOf(bundle.getString("name")); will not able not find the position of item. You have to override the equals method in Item class and add comparing logic. and modify your code "spin.getSelectedItem().toString()" to spin.getSelectedItem() . Please let me if that worksOverstay
I have change according to ur suggestion But it is also not works.Second activity simply return value as their predifined order.Thrombocyte
Can you share updated runnable code of activity A, second activity and Item classOverstay
Can U join team viewerThrombocyte
Make sure your Item class implements Serializable and override equal method and have some unique properties. Please check Item class I have given in my answer at top and Make following in 'activity 1 Item selectedItem = (Item) spinner.getSelectedItem(); intent.putExtra("seletedItem", selectedItem);' second activity 'Item selectedItem = (Item)getIntent().getSerializableExtra("seletedItem"); spinner.setSelection(customerList.indexOf(selectedItem));'Overstay
I have done what U say, U can check my code,But the issue remains same..Thrombocyte
modify onpostexecute method in second activity: protected void onPostExecute(Void result) { customerList.addAll(position,customerList); notifydatasetchaned(); if(selectedItem != null){ service_need.setSelection(customerList.indexOf(selectedItem)); } }Overstay
remove line customerList.addAll(position,customerList); in postexecute methodOverstay
in oncreate method of second remove these lines: if(getIntent().hasExtra(ServiceRequest.EXTRA_INTENT_CUSTOMER_LIST)){ customerList = (ArrayList<Item>) getIntent().getSerializableExtra(ServiceRequest.EXTRA_INTENT_CUSTOMER_LIST); } if(selectedItem != null){ service_need.setSelection(customerList.indexOf(selectedItem)); }Overstay
Sorry ..But I'm still disappointed....Now there is null pointer exception in doInBackground..Thrombocyte
Can you share the url uses to get data or put some dummy data in drop box and share the url so i can run the code and checkOverstay
have you updated the code of second activity that i have suggested in above code ? share the json structure. after update can you share the crash log ?Overstay
I have committed sample. you can checkout at github.com/Praveen935/SpinnerOverstay
you can use only source code, layouts and gson libraryOverstay
Let us continue this discussion in chat.Thrombocyte
T
1

This should be the Intent in the ServiceRequest activity:

Intent intent = new Intent(ServiceRequest.this, Form.class);

Bundle extras = new Bundle();
extras.putString("local", autoCompView.getText().toString());
extras.putInt("position", spin.getSelectedItemPosition());
intent.putExtras(extras);

startActivity(intent);

And this should be how you set the Spinner in the onCreate() method of your Form activity:

spin = (Spinner) findViewById(R.id.spinner);
adapter = new SpinAdapter(this, customerList);
spin.setAdapter(adapter);

Bundle extras = getIntent().getExtras();
spin.setSelection(extras.getInt("position"));
Truthvalue answered 16/8, 2016 at 13:16 Comment(2)
@Thrombocyte My mistake, the method is setSelection(), not setPosition(). Updated the code.Truthvalue
it's not works too..Both spinner populate the server response,No intent value works..Thrombocyte
G
1

I can found the solution. Try to change your both activity code with this,

public class MainActivity extends AppCompatActivity{


private ArrayList<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);
    setContentView(R.layout.activity_main);
   // getLayoutInflater().inflate(R.layout.activity_main, null);

    Button login = (Button) findViewById(R.id.login);
    spin = (Spinner) findViewById(R.id.service_spinner);

    assert login != null;
    login.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v) {

           if (spin.getSelectedItemPosition() == 0) {

               Toast.makeText(MainActivity.this, "Please Select item", Toast.LENGTH_SHORT).show();

            }
            else {

                if(customerList.isEmpty()) return;
                Item selectedItem = (Item) spin.getSelectedItem();
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra(EXTRA_INTENT_SELECTED_ITEM, spin.getSelectedItemPosition());
                startActivity(intent);
            }
        }

    });

    for (int i = 0; i < 1; i++) {

        Item customer = new Item();
        customer.setId(""+i);
        customer.setName("Select Obj");

        // adding movie to movies array
        customerList.add(customer);
    }

    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>> {

    protected void onPreExecute(){
        super.onPreExecute();

    }
    protected ArrayList<Item> doInBackground(Void... params) {
        InputStream is = null;
        String result = "";
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://my_url/json");
            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();
        }
        return customerList;
    }
    @Override
    protected void onPostExecute(ArrayList<Item> customerList) {
        if(customerList != null && !customerList.isEmpty()){
           // adapter.updateDate(customerList);
            adapter.notifyDataSetChanged();
        }
    }

}}

And SecondActivity:

public class SecondActivity extends AppCompatActivity {

private static final String REGISTER_URL = "http://my_url/Service.asmx/GenerateTicket";

public static final String PREFS_NAME = "MyPrefsFile";

public static final String CUSTOMERID = "customerId";
public static final String USERNAME = "name";
public static final String HOUSENO = "houseNo";
public static final String LOCALITY = "areaName";
public static final String SERVICE = "serviceId";
public static final String MOBILE = "mobile";
public static final String EMAIL = "email";
public static final String PROBLEM = "jobBrief";
private ProgressDialog pDialog;
Spinner spin;
String service;
Item selectedItem;
// flag for Internet connection status
Boolean isInternetPresent = false;

private ArrayList<Item> customerList = new ArrayList<Item>();
private SpinnerAdapter adapter;
private List<Item> items;

AdapterView.OnItemSelectedListener listener;

Spinner service_need;
AutoCompleteTextView autoCompView;
String obj;
int pos;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    //getLayoutInflater().inflate(R.layout.activity_second, null);

    if(getIntent().hasExtra(MainActivity.EXTRA_INTENT_SELECTED_ITEM)){
        pos = getIntent().getIntExtra(MainActivity.EXTRA_INTENT_SELECTED_ITEM,0);

    }

    service_need = (Spinner) findViewById(R.id.service_need);

    for (int i = 0; i < 1; i++) {

        Item customer = new Item();
        customer.setId(""+i);
        customer.setName("Select Obj");

        // adding movie to movies array
        customerList.add(customer);
    }


    adapter = new SpinnerAdapter(customerList, this);

    service_need.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();


    }

    protected ArrayList<Item> doInBackground(Void... params) {
        InputStream is = null;
        String result = "";
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://my_url/json");
            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();
        }

        return customerList;
    }

    @Override
    protected void onPostExecute(ArrayList<Item> customerList) {
        if(customerList != null && !customerList.isEmpty()){

            service_need.setSelection(pos);

        }

    }
}}

Issue1: NullPointerException in SecondActivity due to null object spinner. Spinner Id in second activity is Service_need.

Issue2: Back_task DoInBackground method in SecondActivity return null,it must return ArrayList to validate in OnPostExecute.

Thanks.

Hope it helps.!

Gamy answered 30/8, 2016 at 6:1 Comment(2)
It's not working bro.....Still not changing the position of second spinnser according to forst one..Thrombocyte
can u please update what error you got now i check with your code only its working perfect. @ThrombocyteGamy
G
0

Try to get the position of the selected name in the first activity by getting it through the List in second activity.

position = customerList.indexOf(bundle.getString("name"));
spin.setSelection(position,false);
Gauntlett answered 13/8, 2016 at 6:46 Comment(2)
how are you populating the list in the second activity ?Gauntlett
It's populate direct from server...as like first activityThrombocyte
N
0

Use setSelection(position) in place of setSelection(position, false)

Nikkinikkie answered 16/8, 2016 at 12:5 Comment(0)
J
0

get first spinner position and pass another activity through intent and set first spinner position to second spinner. (second spinner must be custom like spinner inflate with edittext).

Jural answered 17/8, 2016 at 6:23 Comment(0)
E
0

lets assume your position is correct, but you can verify with a simple Log.d(tag, "pos:"+position) and that your spinner is being correctly populated with customerList (you can visually verify that or Log.d(tag, "size:"+adapter.getCount()) or spin.getCount())

2 things (or both) to try:

  1. your adapter.notifyDataSetChanged() should come immediately after customerList.addAll(position,customerList). if you do setSelection before that, then your spinner is still empty.

  2. small chance your spinner ui is not ready yet, so do this:

    spin.post(new Runnable() {
        @Override
        public void run() {
            spin.setSelection(position);
        }
    });
    
Emmanuel answered 17/8, 2016 at 17:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.