1

在我ListView的项目中有Switch活动。当项目溢出屏幕时,必须滑动显示顶部或底部项目。然后,顶部或底部项目的切换将自动改变状态并响应事件的状态变化。隐藏在屏幕后面的项目越多,越多发生变化。我不知道如何解决

有没有人可以帮忙?非常感谢。

我已经更新了代码

代码:

private class MAdapter extends CursorAdapter
{
    private Context context;
    private LayoutInflater mInflater;

    public MAdapter(Context context, Cursor c)
    {
        super(context, c, true);

        this.context = context;
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent)
    {
        View v = mInflater.inflate(R.layout.main_task_list_item, null);
        return v;
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor)
    {
        final MZTask task = new MZTask(cursor);

        // ic
        ImageView ic = (ImageView) view
                .findViewById(R.id.main_list_action_ic);
        ic.setImageResource(task.getIcId());

        // action name
        TextView actionName = (TextView) view
                .findViewById(R.id.main_list_action_name);
        actionName.setText(task.getActionName(context));

        // time
        TextView time = (TextView) view
                .findViewById(R.id.main_list_task_time);
        time.setText(task.getTimeString());

        // repeat
        TextView repeat = (TextView) view
                .findViewById(R.id.main_list_task_repeat);
        repeat.setText(task.getDayStringOfWeek(context));

        // switch view
        final Switch stch = (Switch) view
                .findViewById(R.id.main_list_task_switch);
        stch.setOnCheckedChangeListener(getCheckedChangeListener(task));
        stch.setChecked(task.state());

        // list more
        RelativeLayout icLayout = (RelativeLayout) view
                .findViewById(R.id.main_list_more);
        icLayout.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {
                popUpMenu(task);
            }
        });

        // ..
        RelativeLayout itemLayout = (RelativeLayout) view
                .findViewById(R.id.main_list_layout_switch);
        itemLayout.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {
                stch.setChecked(!stch.isChecked());
            }
        });

    }

    public OnCheckedChangeListener getCheckedChangeListener(
            final MZTask task)
    {
        return new OnCheckedChangeListener()
        {
            public void onCheckedChanged(CompoundButton button,
                    boolean change)
            {
                if (change)
                    task.startTask(context, dbAdapter);
                else
                    task.cancelTask(context, dbAdapter);
            }
        };
    }

}
4

0 回答 0