如何从jsonarray获取单个数据
How to get indvidual data from jsonarray
我正在尝试使用来自 mysql/rest 服务的数据填充微调器。我只想在 spinner.In 下拉框中显示所有员工的 ID,我看到带有值的 ID 和其他列的名称:null、年龄:null 等。但是在选择一个之后,我可以单独显示 id 值通过在我的微调器适配器 class 上获取 id 值。如何在下拉框中显示id值?
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
ArrayList<Employee> spinnerArray = new ArrayList<Employee>();
final SpinnerAdapter spinnerAdapter = new SpinnerAdapter(MainActivity.this, spinnerArray);
for (int i = 0; i < response.length(); i++)
{
try {
spinnerAdapter.add(new Employee(response.getJSONObject(i)));
}
catch (JSONException e) {
e.printStackTrace();
}
}
spinner.setAdapter(spinnerAdapter);
我的适配器class
public class SpinnerAdapter extends ArrayAdapter<Employee> {
public SpinnerAdapter(Context context, ArrayList<Employee> employees) {
super(context, R.layout.spinner_id, employees);
}
private static class ViewHolder {
TextView employeeId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Employee employee = getItem(position);
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.spinner_id, parent, false);
viewHolder.employeeId = (TextView) convertView.findViewById(R.id.value_employee_employeeId);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.employeeId.setText(employee.getEmployeeId());
return convertView;
}
将您的项目添加到您的 ArrayList,即 spinnerArray 而不是 spinnerAdapter。数组是放置数据的地方。
spinnerArray.add(new Employee(response.getJSONObject(i)));
编辑: 获取每个单独数据的 ID
String TAG = this.getClass().getSimpleName();
for(Employee employee : spinnerArray){
Log.d("TAG", employee.getEmployeeId());
}
我不知道你的 Employee.class 怎么样,但我希望你能大致了解一下。希望对你有帮助。
你做错了几件事。首先,您使用 json 响应填充数组。如果您想显示 ID,也许您应该考虑使用字符串数组 ("ID")。
ArrayList<String> spinnerArray = new ArrayList<String>();
for (int i = 0; i < response.length(); i++) {
try {
spinnerArray.add(new Employee(response.getJSONObject(i)).getID());
}
catch (JSONException e) {
e.printStackTrace();
}
}
之后你初始化你的适配器
final SpinnerAdapter spinnerAdapter = new SpinnerAdapter(MainActivity.this, spinnerArray);
最后,您将适配器设置为微调器
spinner.setAdapter(spinnerAdapter);
我正在尝试使用来自 mysql/rest 服务的数据填充微调器。我只想在 spinner.In 下拉框中显示所有员工的 ID,我看到带有值的 ID 和其他列的名称:null、年龄:null 等。但是在选择一个之后,我可以单独显示 id 值通过在我的微调器适配器 class 上获取 id 值。如何在下拉框中显示id值?
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
ArrayList<Employee> spinnerArray = new ArrayList<Employee>();
final SpinnerAdapter spinnerAdapter = new SpinnerAdapter(MainActivity.this, spinnerArray);
for (int i = 0; i < response.length(); i++)
{
try {
spinnerAdapter.add(new Employee(response.getJSONObject(i)));
}
catch (JSONException e) {
e.printStackTrace();
}
}
spinner.setAdapter(spinnerAdapter);
我的适配器class
public class SpinnerAdapter extends ArrayAdapter<Employee> {
public SpinnerAdapter(Context context, ArrayList<Employee> employees) {
super(context, R.layout.spinner_id, employees);
}
private static class ViewHolder {
TextView employeeId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Employee employee = getItem(position);
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.spinner_id, parent, false);
viewHolder.employeeId = (TextView) convertView.findViewById(R.id.value_employee_employeeId);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.employeeId.setText(employee.getEmployeeId());
return convertView;
}
将您的项目添加到您的 ArrayList,即 spinnerArray 而不是 spinnerAdapter。数组是放置数据的地方。
spinnerArray.add(new Employee(response.getJSONObject(i)));
编辑: 获取每个单独数据的 ID
String TAG = this.getClass().getSimpleName();
for(Employee employee : spinnerArray){
Log.d("TAG", employee.getEmployeeId());
}
我不知道你的 Employee.class 怎么样,但我希望你能大致了解一下。希望对你有帮助。
你做错了几件事。首先,您使用 json 响应填充数组。如果您想显示 ID,也许您应该考虑使用字符串数组 ("ID")。
ArrayList<String> spinnerArray = new ArrayList<String>();
for (int i = 0; i < response.length(); i++) {
try {
spinnerArray.add(new Employee(response.getJSONObject(i)).getID());
}
catch (JSONException e) {
e.printStackTrace();
}
}
之后你初始化你的适配器
final SpinnerAdapter spinnerAdapter = new SpinnerAdapter(MainActivity.this, spinnerArray);
最后,您将适配器设置为微调器
spinner.setAdapter(spinnerAdapter);