gpt4 book ai didi

android - 如何根据两个不同 Activity 中其他微调器的位置更改微调器的位置

转载 作者:可可西里 更新时间:2023-11-01 19:06:35 25 4
gpt4 key购买 nike

我在两个不同的 Activity 中有两个 android 微调器下拉菜单。但是两个微调器都有来自相同源的相同数据。我想根据第一个 Activity 的位置更改第二个 Activity 的位置。如何解决这个问题?。

更新后的代码:

第一个 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);
}
}

}}

第二个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));
}
}
}
}


}

模型类

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

}
}

适配类

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 个主题解决此问题。

  1. SharePrefernce

  2. Intent

共享偏好

Store the position of the array of Spinner .

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

例子:-

用于将位置保存或存储到 SharePrefernce。

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

用于获取或设置从 SharePrefernce 到 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 .

例子:-

用于将位置保存或存储到 Intent 中。

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

用于获取或设置从 Intent 到 Spinner 的值。

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

这两个都有效。我已经检查过了。

关于android - 如何根据两个不同 Activity 中其他微调器的位置更改微调器的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38929897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com