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"}]
You can solve this problem using 2 topic.
SharePrefernce
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With