如何将 Json 数据加载到 Android 中的微调器中?
How to load Json data into a spinner in Android?
我可以从加载到 List<> 的服务器获取数据,但无法获取特定项目。
Json 数据是这样的。
[
{"subscriptionType":"1234,
"typeName":"stuff",
"name":"Alpha"},
{"subscriptionType":"1234,
"typeName":"stuff",
"name":"Beta"},
]
等等...
我有一个 class,我从调用 Fetch 事件的 Presenter 加载数据。所有这一切似乎都在工作,因为我得到了一个加载到 Array
中的数据的日志
public class AppEntitySubscriptions implements Parcelable {
public AppEntitySubscriptions(ApiSubscription apiSubscription) {
this.subscriptionType = apiSubscription.getSubscriptionType();
this.typeName = apiSubscription.getTypeName();
this.name = apiSubscription.getName();
}
private int subscriptionType;
private String typeName;
private String name;
public
int getSubscriptionType() {
return subscriptionType;
}
public String getTypeName() {
return typeName;
}
public String getName() {
return name;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.subscriptionType);
dest.writeString(this.typeName);
dest.writeString(this.name);
}
@SuppressWarnings("ResourceType")
protected AppEntitySubscriptions(Parcel in) {
this.subscriptionType = in.readInt();
this.typeName = in.readString();
this.name = in.readString();
}
public static final Creator<AppEntitySubscriptions> CREATOR = new Creator<AppEntitySubscriptions>() {
@Override
public AppEntitySubscriptions createFromParcel(Parcel in) {
return new AppEntitySubscriptions(in);
}
@Override
public AppEntitySubscriptions[] newArray(int size) {
return new AppEntitySubscriptions[size];
}
};
现在我迷路了。我只想将 "name" 元素的数据放入微调器
Spinner spinner = (Spinner) findViewById(R.id.spinner);
List<AppEntitySubscriptions> userSubscriptions;//data is here
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.toolbar_spinner_item, "what goes here"???);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
我不知道如何将名称放入它自己的字符串数组中并加载到微调器中。任何建议都会有所帮助。
谢谢。
您无法在 Spinner
中使用此列表
private List<AppEntitySubscriptions> subscriptionsList = new ArrayList<>();
创建新列表
private List subscriptionsStrings = new ArrayList<>();
并填写
for (int i=0; i<subscriptionsList.size(); i++) {
subscriptionsStrings.add(subscriptionsList.get(i).getTypeName());
}
然后
ArrayAdapter<ArrayList<String>>(this, R.layout.toolbar_spinner_item, subscriptionsStrings);
我可以从加载到 List<> 的服务器获取数据,但无法获取特定项目。
Json 数据是这样的。
[
{"subscriptionType":"1234,
"typeName":"stuff",
"name":"Alpha"},
{"subscriptionType":"1234,
"typeName":"stuff",
"name":"Beta"},
]
等等...
我有一个 class,我从调用 Fetch 事件的 Presenter 加载数据。所有这一切似乎都在工作,因为我得到了一个加载到 Array
中的数据的日志public class AppEntitySubscriptions implements Parcelable {
public AppEntitySubscriptions(ApiSubscription apiSubscription) {
this.subscriptionType = apiSubscription.getSubscriptionType();
this.typeName = apiSubscription.getTypeName();
this.name = apiSubscription.getName();
}
private int subscriptionType;
private String typeName;
private String name;
public
int getSubscriptionType() {
return subscriptionType;
}
public String getTypeName() {
return typeName;
}
public String getName() {
return name;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.subscriptionType);
dest.writeString(this.typeName);
dest.writeString(this.name);
}
@SuppressWarnings("ResourceType")
protected AppEntitySubscriptions(Parcel in) {
this.subscriptionType = in.readInt();
this.typeName = in.readString();
this.name = in.readString();
}
public static final Creator<AppEntitySubscriptions> CREATOR = new Creator<AppEntitySubscriptions>() {
@Override
public AppEntitySubscriptions createFromParcel(Parcel in) {
return new AppEntitySubscriptions(in);
}
@Override
public AppEntitySubscriptions[] newArray(int size) {
return new AppEntitySubscriptions[size];
}
};
现在我迷路了。我只想将 "name" 元素的数据放入微调器
Spinner spinner = (Spinner) findViewById(R.id.spinner);
List<AppEntitySubscriptions> userSubscriptions;//data is here
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.toolbar_spinner_item, "what goes here"???);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
我不知道如何将名称放入它自己的字符串数组中并加载到微调器中。任何建议都会有所帮助。
谢谢。
您无法在 Spinner
private List<AppEntitySubscriptions> subscriptionsList = new ArrayList<>();
创建新列表
private List subscriptionsStrings = new ArrayList<>();
并填写
for (int i=0; i<subscriptionsList.size(); i++) {
subscriptionsStrings.add(subscriptionsList.get(i).getTypeName());
}
然后
ArrayAdapter<ArrayList<String>>(this, R.layout.toolbar_spinner_item, subscriptionsStrings);