微调器的 Onitemclicklistner 如何将 id 传递给 android 中的下一个微调器
Onitemclicklistner for spinner how to pass the id to next spinner in android
嗨,下面的代码描述了微调器。在微调器中,我显示了不同类型的建筑物名称,以供调用 Api。根据响应,我将建筑物的名称设置为微调器。
来自回复:
身份证和姓名
现在,我的问题是,当用户从 spinner.I 中选择任何建筑物名称时,想要从微调器中获取 ID,然后将其传递给下一个微调器。
谁能帮我看看怎么做。
private void selectBuilding() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Write code for your refresh logic
progressDialog = new ProgressDialog (getActivity ());
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Communicating...");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setCancelable(false);
progressDialog.show();
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API.URL_BASE)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.client (client)
.build();
API service = retrofit.create (API.class);
final Call<Managebuilding> userCall = service.getbuildinglist ();
userCall.enqueue(new Callback<Managebuilding> () {
@Override
public void onResponse(Call <Managebuilding> call, Response <Managebuilding> response) {
if (response != null && response.code ( ) == 200 && response.isSuccessful ( )) {
Managebuilding building = response.body ();
String Name = null,Id;
String Lists=new Gson ( ).toJson (response.body ());
// JSONArray jsonArray=new JSONArray ();
// JSONObject jsonObject = null;
try {
JSONObject jsonObject = new JSONObject (Lists);
JSONArray result = jsonObject.getJSONArray ("list");
System.out.println (result);
//JSONArray result = jsonArray.getJSONArray ("ID");
arrayList = new ArrayList <> ( );
arrayList1 = new ArrayList <> ( );
for (int i = 0; i <result.length(); i++) {
Id=result.getJSONObject (i).getString ("ID");
Name=result.getJSONObject (i).getString ("Name");
arrayList.add (Name);
arrayList1.add (Id);
}
ArrayAdapter <String> adapter = new ArrayAdapter <String> (getContext (),android.R.layout.simple_spinner_item, arrayList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace ( );
}
progressDialog.dismiss ( );
} else {
progressDialog.dismiss ( );
Log.d ("Response errorBody", String.valueOf (response.errorBody ( )));
}
}
@Override
public void onFailure(Call<Managebuilding> call, Throwable t) {
// lv.setAdapter (adapter);
System.out.println("onFailure");
System.out.println(t.fillInStackTrace());
progressDialog.dismiss();
Toast.makeText(getActivity (), "Some error occurred -> ", Toast.LENGTH_LONG).show();;
// progressDialog.dismiss();
}
});
}
}, 5000);
return ;
}
OnitemclickListner:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener () {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
int pos=spinner.getSelectedItemPosition ();
String ids= String.valueOf (arrayList1.get (pos));
//String obj;
System.out.println (ids);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
String selectedBuildingId="";
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener () {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
selectedBuildingId=position;
// or you can get your id using your pojo class array
//like 'buildingList.get(position).getID();''
yourNextSpinnerArray.add(selectedBuildingId);
//set yourNextSpinnerArray for your next spinner
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
"Nice umang" 的回答听起来不错。
对我来说,我看得更远,我更深入。
我建了一个 class BaseTextSpinnerAdapter<T> extends ArrayAdapter
我有覆盖方法 getItemId
并使其成为我想要的 return。
@Override
public long getItemId(int position) {
if (mItems.get(position) != null) {
return mItems.get(position).getObjectId();
}
return -1;
}
首先创建一个模型Class喜欢Building
public class Building{
private String id;
private String name:
public Building(String id, String name){
this.id = id;
this.name = name;
}
public String getId(){
return id;
}
public String getName(){
return name;
}
}
然后在您的 activity
中创建一个 ArrayList
类型 Building
,如下所示
// declear it in global scope
ArrayList<Building> buildingList;
// and initialize it in `onCreate`
buildingList = new ArrayList <> ();
并在您的 API
回复中使用此 arraylist
,如下所示。
userCall.enqueue(new Callback<Managebuilding> () {
@Override
public void onResponse(Call <Managebuilding> call, Response <Managebuilding> response) {
if (response != null && response.code ( ) == 200 && response.isSuccessful ( )) {
Managebuilding building = response.body ();
String Lists=new Gson ( ).toJson (response.body ());
// JSONArray jsonArray=new JSONArray ();
// JSONObject jsonObject = null;
try {
JSONObject jsonObject = new JSONObject (Lists);
JSONArray result = jsonObject.getJSONArray ("list");
System.out.println (result);
//JSONArray result = jsonArray.getJSONArray ("ID");
arrayList = new ArrayList <> ();
for (int i = 0; i <result.length(); i++) {
String id=result.getJSONObject (i).getString ("ID");
String name =result.getJSONObject (i).getString ("Name");
// here you have create object of building using id and name
Building building = new Building(id, name)
buildingList.add(building);
arrayList.add(name);
}
ArrayAdapter <String> adapter = new ArrayAdapter <String> (getContext (),android.R.layout.simple_spinner_item, arrayList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}catch (JSONException e) {
e.printStackTrace ( );
}
progressDialog.dismiss ( );
} else {
progressDialog.dismiss ( );
Log.d ("Response errorBody", String.valueOf (response.errorBody ( )));
}
}
@Override
public void onFailure(Call<Managebuilding> call, Throwable t) {
// lv.setAdapter (adapter);
System.out.println("onFailure");
System.out.println(t.fillInStackTrace());
progressDialog.dismiss();
Toast.makeText(getActivity (), "Some error occurred -> ", Toast.LENGTH_LONG).show();;
// progressDialog.dismiss();
}
});
}
现在您必须像下面那样修改您的 setOnItemSelectedListener
。
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener () {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// here you can retrive you building info by positon
Building building = buildingList.get(position)
String id = building.getId();
String name = building.getName();
// Now you can use your id or name to do whatever you want.
System.out.println (id);
System.out.println (name);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
嗨,下面的代码描述了微调器。在微调器中,我显示了不同类型的建筑物名称,以供调用 Api。根据响应,我将建筑物的名称设置为微调器。
来自回复: 身份证和姓名
现在,我的问题是,当用户从 spinner.I 中选择任何建筑物名称时,想要从微调器中获取 ID,然后将其传递给下一个微调器。
谁能帮我看看怎么做。
private void selectBuilding() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Write code for your refresh logic
progressDialog = new ProgressDialog (getActivity ());
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Communicating...");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setCancelable(false);
progressDialog.show();
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API.URL_BASE)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.client (client)
.build();
API service = retrofit.create (API.class);
final Call<Managebuilding> userCall = service.getbuildinglist ();
userCall.enqueue(new Callback<Managebuilding> () {
@Override
public void onResponse(Call <Managebuilding> call, Response <Managebuilding> response) {
if (response != null && response.code ( ) == 200 && response.isSuccessful ( )) {
Managebuilding building = response.body ();
String Name = null,Id;
String Lists=new Gson ( ).toJson (response.body ());
// JSONArray jsonArray=new JSONArray ();
// JSONObject jsonObject = null;
try {
JSONObject jsonObject = new JSONObject (Lists);
JSONArray result = jsonObject.getJSONArray ("list");
System.out.println (result);
//JSONArray result = jsonArray.getJSONArray ("ID");
arrayList = new ArrayList <> ( );
arrayList1 = new ArrayList <> ( );
for (int i = 0; i <result.length(); i++) {
Id=result.getJSONObject (i).getString ("ID");
Name=result.getJSONObject (i).getString ("Name");
arrayList.add (Name);
arrayList1.add (Id);
}
ArrayAdapter <String> adapter = new ArrayAdapter <String> (getContext (),android.R.layout.simple_spinner_item, arrayList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace ( );
}
progressDialog.dismiss ( );
} else {
progressDialog.dismiss ( );
Log.d ("Response errorBody", String.valueOf (response.errorBody ( )));
}
}
@Override
public void onFailure(Call<Managebuilding> call, Throwable t) {
// lv.setAdapter (adapter);
System.out.println("onFailure");
System.out.println(t.fillInStackTrace());
progressDialog.dismiss();
Toast.makeText(getActivity (), "Some error occurred -> ", Toast.LENGTH_LONG).show();;
// progressDialog.dismiss();
}
});
}
}, 5000);
return ;
}
OnitemclickListner:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener () {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
int pos=spinner.getSelectedItemPosition ();
String ids= String.valueOf (arrayList1.get (pos));
//String obj;
System.out.println (ids);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
String selectedBuildingId="";
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener () {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
selectedBuildingId=position;
// or you can get your id using your pojo class array
//like 'buildingList.get(position).getID();''
yourNextSpinnerArray.add(selectedBuildingId);
//set yourNextSpinnerArray for your next spinner
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
"Nice umang" 的回答听起来不错。
对我来说,我看得更远,我更深入。
我建了一个 class BaseTextSpinnerAdapter<T> extends ArrayAdapter
我有覆盖方法 getItemId
并使其成为我想要的 return。
@Override
public long getItemId(int position) {
if (mItems.get(position) != null) {
return mItems.get(position).getObjectId();
}
return -1;
}
首先创建一个模型Class喜欢Building
public class Building{
private String id;
private String name:
public Building(String id, String name){
this.id = id;
this.name = name;
}
public String getId(){
return id;
}
public String getName(){
return name;
}
}
然后在您的 activity
中创建一个 ArrayList
类型 Building
,如下所示
// declear it in global scope
ArrayList<Building> buildingList;
// and initialize it in `onCreate`
buildingList = new ArrayList <> ();
并在您的 API
回复中使用此 arraylist
,如下所示。
userCall.enqueue(new Callback<Managebuilding> () {
@Override
public void onResponse(Call <Managebuilding> call, Response <Managebuilding> response) {
if (response != null && response.code ( ) == 200 && response.isSuccessful ( )) {
Managebuilding building = response.body ();
String Lists=new Gson ( ).toJson (response.body ());
// JSONArray jsonArray=new JSONArray ();
// JSONObject jsonObject = null;
try {
JSONObject jsonObject = new JSONObject (Lists);
JSONArray result = jsonObject.getJSONArray ("list");
System.out.println (result);
//JSONArray result = jsonArray.getJSONArray ("ID");
arrayList = new ArrayList <> ();
for (int i = 0; i <result.length(); i++) {
String id=result.getJSONObject (i).getString ("ID");
String name =result.getJSONObject (i).getString ("Name");
// here you have create object of building using id and name
Building building = new Building(id, name)
buildingList.add(building);
arrayList.add(name);
}
ArrayAdapter <String> adapter = new ArrayAdapter <String> (getContext (),android.R.layout.simple_spinner_item, arrayList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}catch (JSONException e) {
e.printStackTrace ( );
}
progressDialog.dismiss ( );
} else {
progressDialog.dismiss ( );
Log.d ("Response errorBody", String.valueOf (response.errorBody ( )));
}
}
@Override
public void onFailure(Call<Managebuilding> call, Throwable t) {
// lv.setAdapter (adapter);
System.out.println("onFailure");
System.out.println(t.fillInStackTrace());
progressDialog.dismiss();
Toast.makeText(getActivity (), "Some error occurred -> ", Toast.LENGTH_LONG).show();;
// progressDialog.dismiss();
}
});
}
现在您必须像下面那样修改您的 setOnItemSelectedListener
。
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener () {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// here you can retrive you building info by positon
Building building = buildingList.get(position)
String id = building.getId();
String name = building.getName();
// Now you can use your id or name to do whatever you want.
System.out.println (id);
System.out.println (name);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}