Android 未调用NotifyDataSetChanged

Android 未调用NotifyDataSetChanged,android,android-arrayadapter,notifydatasetchanged,android-adapterview,Android,Android Arrayadapter,Notifydatasetchanged,Android Adapterview,我正在尝试制作一个像tinder一样刷卡的应用程序。我有一个Texview,上面有一些文字,当我刷下一张卡时,会有另一个文字,依此类推。我还想做的是,当我点击一个按钮,以删除屏幕上的卡,并转到下一个。我正在从列表中删除第一个字符串并调用adapter.notifyDataSetChange。问题是屏幕上的文本保持不变,即使每次单击时字符串都被删除。我甚至在adapter中记录了这些值,它们被更改了,卡片的数量也在下降,但屏幕上的文本保持不变 当我在onResponse调用中下载数据时,fling

我正在尝试制作一个像tinder一样刷卡的应用程序。我有一个Texview,上面有一些文字,当我刷下一张卡时,会有另一个文字,依此类推。我还想做的是,当我点击一个按钮,以删除屏幕上的卡,并转到下一个。我正在从列表中删除第一个字符串并调用adapter.notifyDataSetChange。问题是屏幕上的文本保持不变,即使每次单击时字符串都被删除。我甚至在adapter中记录了这些值,它们被更改了,卡片的数量也在下降,但屏幕上的文本保持不变

当我在onResponse调用中下载数据时,flingContainer是扩展adapterView的自定义视图

myAppAdapter = new MyAppAdapter(list, this);
flingContainer.setAdapter(myAppAdapter);
当我点击按钮时,我呼叫

list.remove(0);
myAppAdapter.notifyDataSetChanged();
这是我的适配器

public class MyAppAdapter extends BaseAdapter {

    public List<String> parkingList;
    public Context context;

    private MyAppAdapter(List<String> apps, Context context) {
        this.parkingList = apps;
        this.context = context;
    }


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

        View rowView = convertView;

        if (rowView == null) {

            LayoutInflater inflater = getLayoutInflater();
            rowView = inflater.inflate(R.layout.item, parent, false);
            viewHolder = new ViewHolder();
            ViewHolder.background = (FrameLayout) rowView.findViewById(R.id.background);
            viewHolder.cardImage = (TextView) rowView.findViewById(R.id.cardImage);

            rowView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.cardImage.setText(parkingList.get(position));

        return rowView;
    }
}
公共类MyAppAdapter扩展BaseAdapter{
公共列表停车列表;
公共语境;
私有MyAppAdapter(列出应用程序、上下文){
this.parkingList=应用程序;
this.context=上下文;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图行视图=转换视图;
if(rowView==null){
LayoutInflater充气机=getLayoutInflater();
rowView=充气机。充气(R.layout.item,父项,false);
viewHolder=新的viewHolder();
ViewHolder.background=(FrameLayout)rowView.findviewbyd(R.id.background);
viewHolder.cardImage=(TextView)rowView.findViewById(R.id.cardImage);
rowView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
viewHolder.cardImage.setText(parkingList.get(position));
返回行视图;
}
}
您调用
列表。删除(0)
,这样只需从列表中删除第一个索引,而不是从适配器中删除。事实上,您将列表的副本传递到适配器中,它们是不同的;因此,要使其在调用列表之外工作,请删除(0)在适配器中添加
removietem()

public void removeItem(int index){
      parkingList.remove(index);
      notifyDataSetChange();
}

我也试过了,但它对我的效果不如其他很多东西好,但过了一段时间后,我发现对我有效的是
removeAllViewsInLayout()
之前的
notifyDataSetChange()
。但是我仍然不知道为什么这不起作用。您应该同时调用removietem(index)和list.remove(),是吗?请仔细检查您的实例。removeAllViewsInLayout在这种情况下是不推荐的。另外,使用LayoutInflater代替getInflater。from()是的,我也在适配器中删除了它,adapter where fine中的值甚至单击卡返回了正确的值,但textview始终显示旧值