获取微调器的ListView中的位置并获取其选定的值 [英] Get the position in a ListView of a Spinner and get its selected value

查看:54
本文介绍了获取微调器的ListView中的位置并获取其选定的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我为 ListView 实现了 ArrayAdapter :

public class CalcAMRListAdapter extends ArrayAdapter<AMRStateListEntry> implements OnItemSelectedListener {

    public CalcAMRListAdapter(Context context, List<AMRStateListEntry> entries) {
        super(context, R.layout.activity_calc_amr_fragment_row, entries);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        AMRStateListEntry entry = this.getItem(position);
        ViewHolder viewHolder = null;
        LayoutInflater inflater = null;

        if(convertView == null) {
            viewHolder = new ViewHolder();
            inflater = LayoutInflater.from(this.getContext());
            convertView = inflater.inflate(R.layout.activity_calc_amr_fragment_row, parent, false);
            viewHolder.spinnerActivity = (Spinner) convertView.findViewById(R.id.calc_amr_row_spinner_activity);
            viewHolder.spinnerHours = (Spinner) convertView.findViewById(R.id.calc_amr_row_spinner_hours);
            viewHolder.textViewPal = (TextView) convertView.findViewById(R.id.calc_amr_row_textview_pal);
            viewHolder.imageButtonDelete = (ImageButton) convertView.findViewById(R.id.calc_amr_row_button_delete);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        String pal = null;

        switch (entry.getActivity()) {
        case 1: pal = "" + 0.95;
            break;
        case 2: pal = "" + 1.2;
            break;
        case 3: pal = "" + 1.5;
            break;
        case 4: pal = "" + 1.7;
            break;
        case 5: pal = "" + 1.9;
            break;
        case 6: pal = "" + 2.4;
            break;
        default: pal = "";
            break;
        }

        viewHolder.spinnerActivity.setSelection(entry.getActivity());
        viewHolder.spinnerActivity.setOnItemSelectedListener(this);
        viewHolder.spinnerHours.setSelection(entry.getHour());
        viewHolder.spinnerHours.setOnItemSelectedListener(this);
        viewHolder.textViewPal.setText(pal);
        viewHolder.imageButtonDelete.setImageResource(R.drawable.ic_remove_row);

        return convertView;
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {}

    private static class ViewHolder {
        Spinner spinnerActivity = null;
        Spinner spinnerHours = null;
        TextView textViewPal = null;
        ImageButton imageButtonDelete = null;
    }
}

如您所见,我的 ListView 的每个项目都包含两个 Spinner .在 onItemSelected 方法中,我现在需要获取该行在 ListView 中的位置,其中使用 Spinner 选择一个值,我也在一排中的两个微调器之间需要有所不同.我的数据模型是 AMRStateListEntry .我需要在 AMRStateListEntry 中设置微调器的选定值.

As you can see each item of my ListView contains two Spinner. In the onItemSelected method i now need to get the position of the row in the ListView where the Spinner was used to select a value and i also need to differ between the two spinners in one row. My data model is the AMRStateListEntry. I need to set the selected values of the spinners inside my AMRStateListEntry.

我该怎么做?

推荐答案

viewHolder.spinnerHours.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int positionInSpinner, long id) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            // TODO Auto-generated method stub

        }
    });

改为像这样创建它.然后将 public View getView(最终int位置,View convertView,ViewGroup父级)的位置设置为 final .现在,您可以在 onItemSelected 内使用 final int position .

Create it like this instead. Then you set public View getView(final int position, View convertView, ViewGroup parent) the position to be final. Now you can use final int position inside your onItemSelected.

并对其他 Spinner

这篇关于获取微调器的ListView中的位置并获取其选定的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆