如何将所选 ID 发送到 Android 中的另一个布局中



>我有包含多个元素的微调器,一旦我单击特定项目,它应该发送到另一个布局,其中包含基于所选 id 的元素列表,但我不知道该怎么做。

这是我的主要类,它有一个微调器

protected void onCreate(Bundle savedInstanceState) {
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String folder = spinner.getItemAtPosition( spinner.getSelectedItemPosition()).toString();
Toast.makeText(getApplicationContext(),folder,Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this, BuildingsListActivity.class);
// Sending value to another activity using intent.
intent.putExtra(EXTRA_FOLDER_NAME, folder);
startActivity(intent);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
// spinner function
private void loadSpinnerFolders (String url) {
RequestQueue requestQueue=Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray=jsonObject.getJSONArray("data");
for(int i=0;i<jsonArray.length();i++){
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
String dossier = jsonObject1.getString("nom");
Folders.add(dossier);
}
// spinner.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, Folders));
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
(MainActivity.this, android.R.layout.simple_spinner_item, Folders);
spinner.setAdapter(spinnerArrayAdapter);
}catch (JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
}

我不知道你的模型和结构。所以我给出了一个相关的代码——

文件夹模型

public class Folder {
int id;
String spinnerItem;
Folder() {
}
public Folder(int id, String spinnerItem) {
this.id = id;
this.spinnerItem = spinnerItem;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSpinnerItem() {
return spinnerItem;
}
public void setSpinnerItem(String spinnerItem) {
this.spinnerItem = spinnerItem;
}
@Override
public String toString() {
return spinnerItem;
}
}

主类

public class MainClass extends AppCompatActivity {
Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = findViewById(R.id.s);
Folder folder = new Folder();
final ArrayAdapter<Folder> adapter = new ArrayAdapter<Folder>(this, android.R.layout.simple_spinner_dropdown_item);
folder.setId(4);
folder.setSpinnerItem("Jelly Bean");
adapter.add(folder);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Intent in = new Intent(this, NextAct.class);
in.putExtra("ItemId", adapter.getItem(i).getId());
startActivity(in);
// This will retrieve id of selected Spinner Item (id - the one in Folder model) i.e. when Jelly Bean is selected, 4 will be passed in NextAct.
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
}

假设您的微调器有 4 个文件夹

文件夹0->0 微调器中的第 1 个位置(微调器的第一项,位置从 0 开始(

文件夹1->在微调器中的第一个位置 ..... 在这种方法中

public void onItemSelected(AdapterView parentView,View selectedItemView, int position, long id( 位置是所选项目的位置

现在在您的代码中

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
int position=spinner.getSelectedItemPosition(); //or i 
String folder = spinner.getItemAtPosition(position).toString();
Toast.makeText(getApplicationContext(),folder,Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this, BuildingsListActivity.class);
// Sending value to another activity using intent.
//folder is the selected item
//position is the corresponding position of selected value in the spinner
intent.putExtra(ID_KEY_NAME, String.valueOf(position+1));
intent.putExtra(EXTRA_FOLDER_NAME, folder);
startActivity(intent);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});

或者,您也可以使用 spinner.getSelectedItemPosition((; 来获取位置。

在此处阅读有关微调器的更多信息

最新更新