从内部类获取外部类变量(局部变量)

时间:2014-03-23 14:31:20

标签: java android listview

我试图找出一种方法,将getView()方法中的位置变量传递给内部类。但是,这可能不是最终变量,因为getView()中的每个项都会调用ListView,因此会发生变化。有没有办法访问该位置变量而不是最终的?或者以巧妙的方式让它最终成为像这样的工作?这是我的代码

public class AlarmListAdapter extends ArrayAdapter<Alarm> {


    public AlarmListAdapter(Context context, int resource, List<Alarm> alarms) {
        super(context, resource, alarms);
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        if (view == null) {
            LayoutInflater viewInflator = LayoutInflater.from(getContext());
            view = viewInflator.inflate(R.layout.item_alarm_list, null);
        }
        Alarm alarm = getItem(position);
        if (alarm != null) {
            TextView alarmName = (TextView) view
                .findViewById(R.id.alarm_list_item_name);
            TextView alarmTime = (TextView) view
                .findViewById(R.id.alarm_list_item_time);
            Switch status = (Switch) view
                .findViewById(R.id.alarm_list_item_status);
            alarmName.setText(alarm.getName());
            alarmTime.setText(alarm.getFormattedHour() + ":"
                + alarm.getMinute() + " " + alarm.getAMPM());
            status.setChecked(alarm.getOn());
            status.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    Alarm alarm = getItem(position);
                } else {
                    // The toggle is disabled
                }
            }
        });
    }
    return view;
    }
}

1 个答案:

答案 0 :(得分:1)

如果你将position变量设为final,那就没问题了。您将其用作只读变量。 使其成为最终对呼叫者没有任何影响,只有在你的方法体上你才能被允许改变它。