notifyDataSetChanged在我的活动中不起作用

阿马德科

在我的代码中,当删除列表视图的列表行时列表视图保持不变。我使用adapter.notifyDataSetChange()但它不是word。这是我的代码:代码在类中的位置不同。

CustomList adapter;
Integer[] imageId;
public String[] _Data2;
 public int positionAll;
ArrayList<ArrayList<String>> _Data = new ArrayList<ArrayList<String>>();
DataBase data = new DataBase(Show_Code.this, "MELK_TBL");


 try {
        data.open();
        _Data = data.GetData();
        imageId = new Integer[_Data.size()];
        _Data2 = new String[_Data.size()];
        for (int i = 0; i < _Data.size(); i++) {
            imageId[i] = R.drawable.municipal;
            _Data2[i] = _Data.get(i).get(1) + "_" + _Data.get(i).get(2) + "_" + _Data.get(i).get(3) + "_" + _Data.get(i).get(4) + "_" + _Data.get(i).get(5) + "_" + _Data.get(i).get(6) + "_0";
        }
        adapter = new CustomList(Show_Code.this, _Data2, imageId);
        data.close();
    } catch (Exception e) {
        Toast.makeText(getApplication(), e.toString(), Toast.LENGTH_LONG).show();
    }

    list.setAdapter(adapter);



list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                                       int position, long id) {

            try {
                data.open();
                data.Delete(_Data.get(position).get(1), _Data.get(position).get(2), _Data.get(position).get(3), _Data.get(position).get(4), _Data.get(position).get(5), _Data.get(position).get(6), _Data.get(position).get(7));
                data.close();
                adapter.notifyDataSetChanged();
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
            }
            return true;
        }
    });

请帮助我,我没有时间:(

杰万南(Jeevanandhan)

删除值之后,您需要传递已删除所有这些值的新arraylist,然后通知适配器类。在您的情况下,请参见以下代码

list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                                       int position, long id) {

            try {
                data.open();
                data.Delete(_Data.get(position).get(1));
                data.close();
                **//Edited code...**
                 _Data.get(position).remove(1);
                 adapter.refreshView(_Data);
                 **//Edited code...**
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
            }
            return true;
        }
    });

并且在适配器类的refreshview方法将如下所示,

    public void refreshView(String[] _Data) {
    this._Data = _Data;
     notifyDataSetChanged();
    }

通过这种方式,您可以通知数据。例如,我仅删除了一个值并进行通知。

希望这会有所帮助:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章