1

我知道他们对于刷新 listView 有很多问题,但他们都没有解决我的问题(据我所知)。

在我的列表视图中单击它时,我试图更改我的项目视图。

要更改boolean isClicked我的 POJO 视图:

        networksListView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> _adapter, View view, int pos, long id) {
            myApp.networksGlobal.networks.get(pos);
            myApp.networksGlobal.networks.get(pos).isClicked = !myApp.networksGlobal.networks.get(pos).isClicked;
            adapter.notifyDataSetChanged();
        }
    });

当我单击项目isClicked从 true 切换为 false 时,在我的getViewlistAdapted 上,我正在切换视图类型:

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

    Network network = (Network) getItem(position);
    NetworkItemView networkItemView;
    if (convertView == null) {
        networkItemView = NetworkItemView_.build(context);
    } else {
        networkItemView = (NetworkItemView) convertView;
    }
    networkItemView.bind(network);
    if (network.isClicked) {
        networkItemView.networkItemButtonLayout.setVisibility(View.VISIBLE);
    } else {
        networkItemView.networkItemButtonLayout.setVisibility(View.GONE);
    }
    return networkItemView;

}

在第一次单击时,一切正常,显示 Toast 并且布局networkItemButtonLayout设置为可见。

但是,如果我在同一个项目上单击第二次:什么都没有发生。没有显示 Toast,并且布局可见性没有变化。

如果我评论adapter.notifyDataSetChanged(),每次点击都会显示 Toast。所以我想问题是为什么调用adapter.notifyDataSetChanged(). 所以尝试了几种解决方法 (adapter.notifyDataSetChanged()networksSearchListView.invalidateViews()) 但没有任何效果,而且我找不到在我的项目上单击几次的方法。

我是否以正确的方式使用“notifyDataSetChanged”?

4

0 回答 0