如何从jsonarray获取个人数据

时间:2016-08-30 16:07:06

标签: android loopj

我正在尝试使用mysql / rest服务中的数据填充微调器。我想只显示spinner中所有员工的id。在下拉框中,我看到id为值,其他列为name:null,age:null等。但是在选择一个后,我能够显示id通过在我的微调器adpater类上获取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);

我的适配器类

    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;

}

2 个答案:

答案 0 :(得分:0)

将您的项目添加到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是怎样的,但我希望你能得到一般的想法。希望这会对你有所帮助。

答案 1 :(得分:0)

你做错了一些事。首先,使用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);