List view implementation with text view and toggle button i=

我是研究僧i 提交于 2019-12-03 10:06:52

change your getView method in this way...

public View getView(final int position, View convertView,
        ViewGroup parent) {
    View v = null;
    TextView arryText;

    if (v == null) {
        LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.inflate, null);
    }
        arryText = (TextView) v.findViewById(R.id.inflateText);
        togg = (ToggleButton) v.findViewById(R.id.toggleButton1);
        v.setTag(new ViewHolder(arryText, togg));

        togg.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {

                    if (onOff[position]) {
                        togg.setChecked(false);
                        onOff[position] = false;

                        Toast.makeText(MainActivity.this, "is off",
                                Toast.LENGTH_SHORT).show();

                    } else {

                        onOff[position] = true;
                        togg.setChecked(true);
                        Toast.makeText(MainActivity.this, "is on",
                                Toast.LENGTH_SHORT).show();

                    }

                }
            });

        arryText.setText(days[position]);
        togg.setChecked(onOff[position]);



    return v;
}

Do like this:

In constructor: pass the context from activity to the Adapter class and use the same context for LayoutInflater:

mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

In getView():

View v = null;

if (convertView == null) {
    v = mInflater.inflate(R.layout.demo_list, parent, false);
} else {
    v = convertView;
}

You got the view(v) now, add views/listeners to it and then return!

return v;

Problem can be with position. Try this code:

public View getView(final int position, View convertView,
            ViewGroup parent) {
        View v = null;
        TextView arryText;
        final int rowPosition = position;

        if (v == null) {
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.inflate, null);

            arryText = (TextView) v.findViewById(R.id.inflateText);
            togg = (ToggleButton) v.findViewById(R.id.toggleButton1);
            v.setTag(new ViewHolder(arryText, togg));


            togg.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // Save the state here
            onOff[rowPosition]= isChecked;
              Toast.makeText(MainActivity.this, isChecked ? "is on" : "is off",
                                Toast.LENGTH_SHORT).show();
            }
            });


            arryText.setText(days[rowPosition]);
            togg.setChecked(onOff[rowPosition]);

        }

        return v;
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!