在两个不同的活动中如何根据另一个微调器的位置更改微调器的位置 [英] How to change the position of a spinner according to position of other spinner in two different activities
问题描述
我在两个不同的活动中有两个android旋转器下拉列表,但是两个旋转器都具有来自同一源的相同数据.我想根据第一个活动的位置更改第二个活动的位置.如何解决此问题?.
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 ?.
更新的代码:
第一个活动:
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);
}
}
}}
第二项活动代码
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));
}
}
}
}
}
模型类
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类
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响应
[{"ServiceId":"1","ServiceName":"AC"},
{"ServiceId":"5","ServiceName":"Plumbing"},
{"ServiceId":"3","ServiceName":"Refrigerator"},
{"ServiceId":"7","ServiceName":"Appliances"},
{"ServiceId":"27","ServiceName":"Others"}]
推荐答案
您可以使用2个主题来解决此问题.
You can solve this problem using 2 topic.
-
SharePrefernce
SharePrefernce
意图
SharePrefernce
存储Spinner数组的位置.
Store the position of the array of Spinner .
获取位置,然后再次使用时将其设置为微调器.
Get the position and set to the Spinner it when you again using .
示例:-
用于将位置保存或存储到SharePrefernce中.
For saving Or storing position into SharePrefernce.
int position = spin.getSelectedItemPosition() ;
PreferenceManager.getDefaultSharedPreferences(this).edit().putInt("position",position ).commit();
用于从SharePrefernce获取或设置值到Spinner.
For getting or setting value from SharePrefernce to Spinner.
int position = PreferenceManager.getDefaultSharedPreferences(this).getInt("position", 0);
spin.setSelection(position);
意图
在意图中存储Spinner数组的位置.
Store the position of the array of Spinner in the intent.
获取位置,并在再次使用intent时将其设置为Spinner.
Get the position and set to the Spinner it when you again using intent .
示例:-
用于将位置保存或存储到Intent中.
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);
用于从Intent到Spinner中获取或设置值.
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.
这篇关于在两个不同的活动中如何根据另一个微调器的位置更改微调器的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!