错误:无法解析通知数据集已更改();人造人



我在更新列表视图时遇到一些问题。

所以我使用了 notifyDataSetChanged(); 但它说它无法解决。

这是代码中不起作用的部分:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity2);
    background2= (RelativeLayout) findViewById(R.id.background);
    final ListView theListView = (ListView) findViewById(R.id.listView);
    Intent calledActivity=getIntent();
    final List pe=calledActivity.getExtras().getStringArrayList("Caller1");
    String []s =new String[pe.size()];
    for(int i=0;i<pe.size();i++)
    {
        s[i]=(String)pe.get(i);
    }
            final ListAdapter theAdapter= new ArrayAdapter<String>(this,    android.R.layout.simple_list_item_1, pe);
             theListView.setAdapter(theAdapter);
    final int cnt=1;
    theListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String s1 = String.valueOf(parent.getItemAtPosition(position));
            pe.remove(s1);
            runOnUiThread(new Runnable() {
                public void run() {
                    theAdapter.notifyDataSetChanged();
                }
            });

        }
    });

    }

notifyDataSetChanged不是ListAdapter的方法,而是BaseAdapter的方法(ArrayAdapter是BaseAdapter的一个子类)。要修复,您可以简单地强制转换列表适配器

theListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String s1 = String.valueOf(parent.getItemAtPosition(position));
            pe.remove(s1);
             ((BaseAdapter)theAdapter).notifyDataSetChanged();

最新更新