Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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 奇怪的行为ArrayList.remove();_Android_Listview_Indexing_Adapter - Fatal编程技术网

Android 奇怪的行为ArrayList.remove();

Android 奇怪的行为ArrayList.remove();,android,listview,indexing,adapter,Android,Listview,Indexing,Adapter,我遇到了一个问题,我似乎无法独自解决它 我正在尝试使用.remove(position)从列表视图中删除项目;和。通知数据设置(位置);但它正在消除错误的立场 这是我的密码 @Override public View getView(int position, View convertView, ViewGroup parent) { try { ViewHolder holder; final String[]

我遇到了一个问题,我似乎无法独自解决它

我正在尝试使用.remove(position)从列表视图中删除项目;和。通知数据设置(位置);但它正在消除错误的立场

这是我的密码

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

        try {
            ViewHolder holder;
            final String[] parts;
            final String uuidbeacon;
            uuidbeacon = arrayL.get(position).getProximityUuid().toString();
            minorbeacon = arrayL.get(position).getMinor();
            rangebeacon = arrayL.get(position).getAccuracy();
            parts = fetchTums(uuidbeacon).split("::");

            if (convertView != null) {
                holder = (ViewHolder) convertView.getTag();
            }
            else{

                if(parts[0].equals("1")) {
                    holder = new ViewHolder(convertView = inflater.inflate(R.layout.tupple_monitoring, null));
                    holder.beacon_image.setImageDrawable(getTumImage("http://127.0.0.1/uploads/face/" + parts[4]));
                    holder.beacon_uuid.setText(parts[1]);
                    holder.beacon_txpower.setText(String.valueOf(position));
                }
                if(parts[0].equals("0"))
                {
                    holder = new ViewHolder(convertView = inflater.inflate(R.layout.tupple_monitoring, null));
                    holder.beacon_txpower.setText(String.valueOf(position));
                    toRemoveString = toRemoveString + String.valueOf(position) + "::";
                }
                if(parts[2].equals("1"))
                {
                    holder = new ViewHolder(convertView = inflater.inflate(R.layout.tupple_monitoring, null));
                    holder.beacon_image.setImageDrawable(getTumImage("http://127.0.0.1/uploads/face/" + parts[4]));
                    holder.beacon_uuid.setText(parts[1]);
                    holder.beacon_txpower.setText("Hier misschien wat text?");
                    holder.beacon_row.setBackgroundColor(Color.parseColor("#B6B6B6"));
                    holder.image_lock.setVisibility(View.VISIBLE);
                }

            }
            if (arrayL.get(position).getProximityUuid() != null)


            list.setOnItemClickListener(new AdapterView.OnItemClickListener()
            {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id )
                {
                    //list.setItemChecked(position, true);
                    //view.setBackgroundColor(Color.BLUE);

                   final String[] parts;
                   parts = fetchTums(arrayL.get(position).getProximityUuid().toString()).split("::");

                   if(parts[2].equals("1")){

                       pin(parts[3], parts[1]);
                   }
                   else{
                        if(parts[3] != null){
                            openPage(parts[3], "", parts[1]);
                        }
                   }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }


        return convertView;
    }
只需单击一个按钮即可调用它


但是现在发生的事情很奇怪,当我单击按钮时,它将删除位置为1的项目,如果我再次单击它,它将删除位置为0的项目。如果我更改了arrayL.remove(0);至arrayL。移除(1);它将删除位置为1的项目,如果我再次单击,它将按预期崩溃。但我真正想要的是删除位置0并保留位置1。

您的代码正在工作,但在转换“convertView”后,您不会更新其值

ViewHolder holder;
        final String[] parts;
        final String uuidbeacon;
        uuidbeacon = arrayL.get(position).getProximityUuid().toString();
        minorbeacon = arrayL.get(position).getMinor();
        rangebeacon = arrayL.get(position).getAccuracy();
        parts = fetchTums(uuidbeacon).split("::");

        if (convertView != null) {
            holder = (ViewHolder) convertView.getTag();
        }
        else{
holder = new ViewHolder(convertView = inflater.inflate(R.layout.tupple_monitoring, null));
}
            if(parts[0].equals("1")) {

            holder.beacon_image.setImageDrawable(getTumImage("http://127.0.0.1/uploads/face/" + parts[4]));
                holder.beacon_uuid.setText(parts[1]);
                holder.beacon_txpower.setText(String.valueOf(position));
            }
            if(parts[0].equals("0"))
            {

                holder.beacon_txpower.setText(String.valueOf(position));
                toRemoveString = toRemoveString + String.valueOf(position) + "::";
            }
            if(parts[2].equals("1"))
            {

                holder.beacon_image.setImageDrawable(getTumImage("http://127.0.0.1/uploads/face/" + parts[4]));
                holder.beacon_uuid.setText(parts[1]);
                holder.beacon_txpower.setText("Hier misschien wat text?");
                holder.beacon_row.setBackgroundColor(Color.parseColor("#B6B6B6"));
                holder.image_lock.setVisibility(View.VISIBLE);
            }

您是否尝试过在arrayL.remove(0)上放置断点进行调试,并查看arrayL在删除之前有哪些元素以及它们的顺序?@dora我不知道您的确切意思,但我拍摄了调试的屏幕截图,您可以在这里看到(无法在文章中显示图片需要10 rep:/)
holder=(ViewHolder)convertView.getTag()你认为这有什么作用?(提示:您从不调用
setTag
)这是什么意思?我看到我的列表视图项从屏幕上消失了,但它是错误的。在重用视图时,您的“convertView”是第二个,并且您没有更新视图中的值。更新你的代码作为我的答案。
ViewHolder holder;
        final String[] parts;
        final String uuidbeacon;
        uuidbeacon = arrayL.get(position).getProximityUuid().toString();
        minorbeacon = arrayL.get(position).getMinor();
        rangebeacon = arrayL.get(position).getAccuracy();
        parts = fetchTums(uuidbeacon).split("::");

        if (convertView != null) {
            holder = (ViewHolder) convertView.getTag();
        }
        else{
holder = new ViewHolder(convertView = inflater.inflate(R.layout.tupple_monitoring, null));
}
            if(parts[0].equals("1")) {

            holder.beacon_image.setImageDrawable(getTumImage("http://127.0.0.1/uploads/face/" + parts[4]));
                holder.beacon_uuid.setText(parts[1]);
                holder.beacon_txpower.setText(String.valueOf(position));
            }
            if(parts[0].equals("0"))
            {

                holder.beacon_txpower.setText(String.valueOf(position));
                toRemoveString = toRemoveString + String.valueOf(position) + "::";
            }
            if(parts[2].equals("1"))
            {

                holder.beacon_image.setImageDrawable(getTumImage("http://127.0.0.1/uploads/face/" + parts[4]));
                holder.beacon_uuid.setText(parts[1]);
                holder.beacon_txpower.setText("Hier misschien wat text?");
                holder.beacon_row.setBackgroundColor(Color.parseColor("#B6B6B6"));
                holder.image_lock.setVisibility(View.VISIBLE);
            }