Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在Listview中未维护复选框状态_Android_Checkbox_Android Listview - Fatal编程技术网

Android 在Listview中未维护复选框状态

Android 在Listview中未维护复选框状态,android,checkbox,android-listview,Android,Checkbox,Android Listview,我正在设置删除多个项目的复选框。当我选中元素时,我的“添加”按钮将更改 要删除,但当我滚动列表视图时,我的“删除”按钮将更改为“添加”按钮,但在未选中所有复选框之前,该按钮不应出现。为了在操作栏中维护“删除”和“添加”按钮,我在单击“检查”时使用列表框,我将元素的当前位置设置为“复选框”,当复选框未选中时,从复选框中删除该位置 这里我的问题是,当选中复选框时,添加符号会更改为 删除图标。当我滚动并且选中的记录不在屏幕上时 删除图标更改为添加图标,当我滚动回选中的 记录后,删除图标返回。我对Lis

我正在设置删除多个项目的复选框。当我选中元素时,我的“添加”按钮将更改 要删除,但当我滚动列表视图时,我的“删除”按钮将更改为“添加”按钮,但在未选中所有复选框之前,该按钮不应出现。为了在操作栏中维护“删除”和“添加”按钮,我在单击“检查”时使用列表框,我将元素的当前位置设置为“复选框”,当复选框未选中时,从复选框中删除该位置

这里我的问题是,当选中复选框时,添加符号会更改为 删除图标。当我滚动并且选中的记录不在屏幕上时 删除图标更改为添加图标,当我滚动回选中的 记录后,删除图标返回。我对Listview中的此复选框感到非常困惑。请检查我的代码以帮助我

提前谢谢

包com.office.sdpa.custom.classes

公共类管理器扩展ArrayAdapter{

私人最终名单;
私人最终活动背景;
布尔checkAll_标志=false;
布尔checkItem_标志=false;
List SelectedBox=新建ArrayList();
菜单项删除,添加日志;
public ManagePracAdapter(活动上下文、列表、MenuItem mymenu、MenuItem myaddlog){
super(上下文、R.layout.row、列表);
this.context=上下文;
this.list=列表;
删除=我的菜单;
addlog=myaddlog;
}
静态类视窗夹{
受保护的文本查看文本;
受保护的文本视图日期时间;
受保护的天气;
受保护的文本视图持续时间;
受保护的文本视图管理器;
受保护的文本视图昼夜图标;
受保护复选框;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
ViewHolder ViewHolder=null;
if(convertView==null){
LayoutInflater充气器=上下文。getLayoutInflater();
convertView=充气机。充气(R.layout.logitem1,空);
viewHolder=新的viewHolder();
viewHolder.text=(TextView)convertView.findViewById(R.id.id\u);
viewHolder.datetime=(TextView)convertView.findViewById(R.id.id\u datetime);
viewHolder.weather=(TextView)convertView.findViewById(R.id.id\u weather);
viewHolder.duration=(TextView)convertView.findViewById(R.id.totminutes);
viewHolder.supervisor=(TextView)convertView.findViewById(R.id.conditions);
viewHolder.day\u night\u icon=(TextView)convertView.findViewById(R.id.day\u night\u icon);
viewHolder.checkbox=(checkbox)convertView.findViewById(R.id.id_chkDelete);
viewHolder.checkbox.setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener()){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
int getPosition=(Integer)buttonView.getTag();//这里我们使用setTag获取为复选框设置的位置。
list.get(getPosition).setSelected(buttonView.isChecked());//设置复选框的值以保持其状态。
if(SelectedBox.size()-1==0)
{
Delete.setVisible(false);
addlog.setVisible(true);
}否则
{
addlog.setVisible(false);
}
如果(已检查)
{
选择框。添加(位置);
Delete.setVisible(true);
addlog.setVisible(false);
}else/*如果(!已检查)*/
{
SelectedBox.remove(SelectedBox.indexOf(位置));
}
}
});
convertView.setTag(viewHolder);
setTag(R.id.id\u,viewHolder.text);
setTag(R.id.id_chkDelete,viewHolder.checkbox);
setTag(R.id.id_datetime,viewHolder.datetime);
convertView.setTag(R.id.id_weather,viewHolder.weather);
setTag(R.id.totminutes,viewHolder.duration);
convertView.setTag(R.id.conditions、viewHolder.supervisor);
convertView.setTag(R.id.day\u night\u图标、viewHolder.day\u night\u图标);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
viewHolder.checkbox.setTag(位置);//这一行很重要。
viewHolder.text.setText(list.get(position.getName());
viewHolder.datetime.setText(list.get(position.getDatetime());
viewHolder.weather.setText(list.get(position.getWeather());
viewHolder.checkbox.setChecked(list.get(position.isSelected());
if(!list.get(position).getDay_minutes().toString().equalsIgnoreCase(“0”))
{
viewHolder.duration.setText(list.get(position.getDay_minutes());
viewHolder.day\u night\u图标.setBackgroundResource(R.drawable.sun);
}否则
{
viewHolder.duration.setText(list.get(position.getNight_minutes());
viewHolder.day\u night\u图标。setBackgroundResource(R.drawable.moon);
}
if(list.get(position.getSupervisor().equals(“无主管”))
{
viewHolder.supervisor.setBackgroundResource(R.drawable.pending);
}否则
{
视图持有者、主管、挫折资源(R.可绘制、批准);
}
字符串fontPath=“font/Roboto Light.ttf”;
Typeface tf=Typeface.createFromAsset(context.getAssets(),fontPath);
viewHolder.datetime.setTypeface(tf);
viewHolder.duration.setTypeface(tf);
viewHolder.text.setTypeface(tf);
viewHolder.weather.setTypeface(tf);
Delete.setOnMenuItemClickListener(新的OnMenuItemClickListener(){
@凌驾
公共布尔onMenuItemClick(菜单项){
//TODO自动生成的方法存根
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(上下文);
//定名
alertDialogBuilder.setTitle(“学生驾驶练习日志”);
//设置对话框消息
alertDialogBuilder
塞特梅萨先生
private final List<Model> list;
private final Activity context;
boolean checkAll_flag = false;
boolean checkItem_flag = false;
List<Integer> SelectedBox= new ArrayList<Integer>();
MenuItem Delete,addlog;



public ManagePracAdapter(Activity context, List<Model> list,MenuItem mymenu,MenuItem      myaddlog) {
    super(context, R.layout.row, list);
    this.context = context;
    this.list = list;
    Delete=mymenu;
    addlog=myaddlog;

}

static class ViewHolder {
    protected TextView text;
    protected TextView datetime;
    protected TextView weather;
    protected TextView duration;
    protected TextView supervisor;
    protected  TextView day_night_icon;
    protected CheckBox checkbox;

}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    ViewHolder viewHolder = null;
    if (convertView == null) {
        LayoutInflater inflator = context.getLayoutInflater();
        convertView = inflator.inflate(R.layout.logitem1, null);
        viewHolder = new ViewHolder();
        viewHolder.text = (TextView) convertView.findViewById(R.id.id_skills);
        viewHolder.datetime = (TextView) convertView.findViewById(R.id.id_datetime);
        viewHolder.weather = (TextView) convertView.findViewById(R.id.id_weather);
        viewHolder.duration=(TextView)  convertView.findViewById(R.id.totminutes);
        viewHolder.supervisor=(TextView)  convertView.findViewById(R.id.conditions);
        viewHolder.day_night_icon=(TextView)  convertView.findViewById(R.id.day_night_icon);
        viewHolder.checkbox = (CheckBox) convertView.findViewById(R.id.id_chkDelete);
        viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                int getPosition = (Integer) buttonView.getTag();  // Here we get the position that we have set for the checkbox using setTag.
                list.get(getPosition).setSelected(buttonView.isChecked()); // Set the value of checkbox to maintain its state.

                if(SelectedBox.size()-1==0)
                {
                    Delete.setVisible(false);
                    addlog.setVisible(true);
                }else
                {
                    addlog.setVisible(false);
                }


                if(isChecked)
                {
                    SelectedBox.add(position);
                    Delete.setVisible(true);
                    addlog.setVisible(false);


                }else /*if(!isChecked)*/
                {
                SelectedBox.remove(SelectedBox.indexOf(position));

                }
            }
        });





        convertView.setTag(viewHolder);
        convertView.setTag(R.id.id_skills, viewHolder.text);
        convertView.setTag(R.id.id_chkDelete, viewHolder.checkbox);
        convertView.setTag(R.id.id_datetime,viewHolder.datetime);
        convertView.setTag(R.id.id_weather,viewHolder.weather);
        convertView.setTag(R.id.totminutes,viewHolder.duration);
        convertView.setTag(R.id.conditions,viewHolder.supervisor);
        convertView.setTag(R.id.day_night_icon,viewHolder.day_night_icon);

        } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    viewHolder.checkbox.setTag(position); // This line is important.

    viewHolder.text.setText(list.get(position).getName());
    viewHolder.datetime.setText(list.get(position).getDatetime());
    viewHolder.weather.setText(list.get(position).getWeather());
    viewHolder.checkbox.setChecked(list.get(position).isSelected());
    if(!list.get(position).getDay_minutes().toString().equalsIgnoreCase("0"))
    {
        viewHolder.duration.setText(list.get(position).getDay_minutes());
        viewHolder.day_night_icon.setBackgroundResource(R.drawable.sun);
    }else
    {
        viewHolder.duration.setText(list.get(position).getNight_minutes());
        viewHolder.day_night_icon.setBackgroundResource(R.drawable.moon);

    }
    if(list.get(position).getSupervisor().equals("No supervisor"))
    {
        viewHolder.supervisor.setBackgroundResource(R.drawable.pending);
    }else
    {
        viewHolder.supervisor.setBackgroundResource(R.drawable.approve);
    }
    String fontPath = "fonts/Roboto-Light.ttf";
    Typeface tf = Typeface.createFromAsset(context.getAssets(), fontPath);
    viewHolder.datetime.setTypeface(tf);
    viewHolder.duration.setTypeface(tf);
    viewHolder.text.setTypeface(tf);
    viewHolder.weather.setTypeface(tf);


    Delete.setOnMenuItemClickListener(new OnMenuItemClickListener() {

        @Override
        public boolean onMenuItemClick(MenuItem item) {
            // TODO Auto-generated method stub

            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

            // set title
            alertDialogBuilder.setTitle("Student Driving Practice Log");

            // set dialog message
            alertDialogBuilder
            .setMessage("Are you sure want to Delete Record!")
            .setCancelable(false)
            .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {

                    try
                    {
                        NewNewDataHelper db=new NewNewDataHelper(context);

                        if(!SelectedBox.isEmpty())
                        {
                            for(int i=0;i<SelectedBox.size();i++)
                            {

                            //  resultp=data.get(SelectedBox.get(i));
                                String str[]=list.get(i).getDatetime().split("  ");

                                Log.d("Checked Element",str[0]+"\n"+str[1]+"\n"+list.get(i).getName());


                                db.DeleteSingleLog(list.get(i).getName(),str[0],str[1]);

                                /*resultp=data.get(SelectedBox.get(i));

                                String str[]=resultp.get("date_time").split(" ");
                                db.DeleteSingleLog(resultp.get("Skill"),str[0],str[1]);*/

                                    Toast.makeText(context,"Record Deleted", Toast.LENGTH_LONG).show();


                            }

                            Log.d("LISTSTSTSTST", SelectedBox.toString());


                            Intent intent = new Intent(context,ManagePracticeLogActivity.class);
                            intent.putExtra("s11", "delete");
                            context.startActivity(intent);
                        }
                    }catch(Exception e)
                    {

                    }


                }
            })
            .setNegativeButton("No",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    // if this button is clicked, just close
                    // the dialog box and do nothing
                    dialog.cancel();

                }
            });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();



            return false;
        }
    });
    convertView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub




            String str1 = null;
            String str[]=list.get(position).getDatetime().split("  ");


            Log.d("PARTICULAR SKILLLLL",str[1]);
            str1=str[0]+"~"+list.get(position).getName()+"~"+str[1];
            Log.d("PARTICULAR SKILLLLL", str1);
                Intent intent = new Intent(context,LogEdit.class);
                intent.putExtra("s11","Update Practice");
                intent.putExtra("dataupdate",str1);
                context.startActivity(intent);
        }
    });

    return convertView;
}
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        ViewHolder viewHolder = null;
        if (convertView == null) {
            LayoutInflater inflator = context.getLayoutInflater();
            convertView = inflator.inflate(R.layout.logitem1, null);
            viewHolder = new ViewHolder();
            viewHolder.text = (TextView) convertView.findViewById(R.id.id_skills);
            viewHolder.datetime = (TextView) convertView.findViewById(R.id.id_datetime);
            viewHolder.weather = (TextView) convertView.findViewById(R.id.id_weather);
            viewHolder.duration=(TextView)  convertView.findViewById(R.id.totminutes);
            viewHolder.supervisor=(TextView)  convertView.findViewById(R.id.conditions);
            viewHolder.day_night_icon=(TextView)  convertView.findViewById(R.id.day_night_icon);
            viewHolder.checkbox = (CheckBox) convertView.findViewById(R.id.id_chkDelete);

            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        viewHolder.text.setText(list.get(position).getName());
        viewHolder.datetime.setText(list.get(position).getDatetime());
        viewHolder.weather.setText(list.get(position).getWeather());
        viewHolder.checkbox.setChecked(list.get(position).isSelected());
        if(!list.get(position).getDay_minutes().toString().equalsIgnoreCase("0"))
        {
            viewHolder.duration.setText(list.get(position).getDay_minutes());
            viewHolder.day_night_icon.setBackgroundResource(R.drawable.sun);
        }else
        {
            viewHolder.duration.setText(list.get(position).getNight_minutes());
            viewHolder.day_night_icon.setBackgroundResource(R.drawable.moon);

        }
        if(list.get(position).getSupervisor().equals("No supervisor"))
        {
            viewHolder.supervisor.setBackgroundResource(R.drawable.pending);
        }else
        {
            viewHolder.supervisor.setBackgroundResource(R.drawable.approve);
        }
        String fontPath = "fonts/Roboto-Light.ttf";
        Typeface tf = Typeface.createFromAsset(context.getAssets(), fontPath);
        viewHolder.datetime.setTypeface(tf);
        viewHolder.duration.setTypeface(tf);
        viewHolder.text.setTypeface(tf);
        viewHolder.weather.setTypeface(tf);

        viewHolder.checkbox.setTag(position); // This line is important.


        viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                list.get(position).setSelected(isChecked); // Set the value of checkbox to maintain its state.

                if(SelectedBox.size()-1==0)
                {
                    Delete.setVisible(false);
                    addlog.setVisible(true);
                }else
                {
                    addlog.setVisible(false);
                }


                if(isChecked)
                {
                    SelectedBox.add(position);
                    Delete.setVisible(true);
                    addlog.setVisible(false);


                }else /*if(!isChecked)*/
                {
                    SelectedBox.remove(SelectedBox.indexOf(position));

                }
            }
        });

        Delete.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

                // set title
                alertDialogBuilder.setTitle("Student Driving Practice Log");

                // set dialog message
                alertDialogBuilder
                        .setMessage("Are you sure want to Delete Record!")
                        .setCancelable(false)
                        .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {

                                try
                                {
                                    NewNewDataHelper db=new NewNewDataHelper(context);

                                    if(!SelectedBox.isEmpty())
                                    {
                                        for(int i=0;i<SelectedBox.size();i++)
                                        {

                                            //  resultp=data.get(SelectedBox.get(i));
                                            String str[]=list.get(i).getDatetime().split("  ");

                                            Log.d("Checked Element",str[0]+"\n"+str[1]+"\n"+list.get(i).getName());


                                            db.DeleteSingleLog(list.get(i).getName(),str[0],str[1]);

                                /*resultp=data.get(SelectedBox.get(i));

                                String str[]=resultp.get("date_time").split(" ");
                                db.DeleteSingleLog(resultp.get("Skill"),str[0],str[1]);*/

                                            Toast.makeText(context,"Record Deleted", Toast.LENGTH_LONG).show();


                                        }

                                        Log.d("LISTSTSTSTST", SelectedBox.toString());


                                        Intent intent = new Intent(context,ManagePracticeLogActivity.class);
                                        intent.putExtra("s11", "delete");
                                        context.startActivity(intent);
                                    }
                                }catch(Exception e)
                                {

                                }


                            }
                        })
                        .setNegativeButton("No",new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                // if this button is clicked, just close
                                // the dialog box and do nothing
                                dialog.cancel();

                            }
                        });

                // create alert dialog
                AlertDialog alertDialog = alertDialogBuilder.create();

                // show it
                alertDialog.show();



                return false;
            }
        });
        convertView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub




                String str1 = null;
                String str[]=list.get(position).getDatetime().split("  ");


                Log.d("PARTICULAR SKILLLLL", str[1]);
                str1=str[0]+"~"+list.get(position).getName()+"~"+str[1];
                Log.d("PARTICULAR SKILLLLL", str1);
                Intent intent = new Intent(context,LogEdit.class);
                intent.putExtra("s11","Update Practice");
                intent.putExtra("dataupdate",str1);
                context.startActivity(intent);
            }
        });

        return convertView;
    }
public class ViewHolder
{
    TextView contactname, statusmsg, msisdnview, imgview, chatstsview;
    ImageView img;
    CheckBox contactCheckBox;
}
ViewHolder holder = null;
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
    // TODO Auto-generated method stub
    holder=new ViewHolder();
    View rowView = convertView;  
    if(rowView == null)
    {
        rowView = inflater.inflate(R.layout.contact_list, null);
        holder.contactname=(TextView) rowView.findViewById(R.id.textView1);
        holder.statusmsg=(TextView) rowView.findViewById(R.id.textView2);
        holder.img=(ImageView) rowView.findViewById(R.id.imageView1); 
        holder.contactCheckBox = (CheckBox) rowView.findViewById(R.id.contactchk);
        rowView.setTag(holder);
    }
    else
    {
        holder = (ViewHolder) rowView.getTag();
    }

    holder.contactname.setTag("textview_"+msisdn[position]);
    holder.contactCheckBox.setTag("checkbox_"+msisdn[position]);
    holder.contactname.setText(result[position]);

    ImageLoader img = new ImageLoader(context);
    img.DisplayImage(imageId[position], loader, holder.img);

    holder.statusmsg.setText(status[position]);

    holder.contactCheckBox.setTag(position);

    holder.contactCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
    {           
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            // TODO Auto-generated method stub
            int getPosition = (Integer) buttonView.getTag();
            isCheckedCheckBox[getPosition] = buttonView.isChecked();
        }
    });


    if(isCheckedCheckBox[position])
    {
        holder.contactCheckBox.setChecked(true);
    }  
    else
    {
       holder.contactCheckBox.setChecked(false);
    }
    holder.contactCheckBox.setOnClickListener(null);

    rowView.setTag(holder);
    return rowView;
}