Android,点击项目刷新列表视图

时间:2012-12-10 11:21:56

标签: android android-listview

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

我在列表视图中点击它时尝试更改项目视图。

要更改视图,我的POJO上有boolean isClicked

        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,并在我的getView listAdapted上切换视图类型:

    @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'?

0 个答案:

没有答案