1

这是我的问题:我有一个包含几行的列表视图。这些行具有单一类型的 listadapter(尽管有多种类型的行)。如果用户选择了一行,则需要取消选择另一行。选择行的方式取决于行类型。当某些行在编辑文本字段等中写入内容时,它们会被选中。可以说,行选择算法必须在 listadapter 类中。

我使用的一种解决方案是在getView()行初始化零件以及选择一行时,将“选择”显示算法在调用Notifiythis.notifyDataSetChanged();刷新整个listView。当然,这太昂贵了,并且会导致一系列其他问题。

所以我需要一种方法来从我的自定义适配器类中更新列表视图中的其他行。如何访问当前选定行的“兄弟”?

任何输入将不胜感激!谢谢!

4

1 回答 1

1

好吧,我精明的同事,我相信我已经找到了解决您问题的方法:

使用您需要的 listView 作为自定义适配器的构造函数!

因此,在您的自定义适配器中,您的构造函数将是:

    public SubEventListAdapter(Context context, ArrayList<MobileSubEvent> items,  MobileSubActivity parentSubActivity, ListView listView)
        {
            super(context, R.layout.view_select_event_item, items);
            this._items = items;
            this._context = context;
            this.parentSubActivity = parentSubActivity;
            this.listView = listView;
        }

在您的活动中,您将像这样设置适配器:

listView.setAdapter(new SubEventListAdapter(listView.getContext(), subActivity.get_subEventsList(), subActivity, listView));

现在,在您的适配器中,您可以随意使用 listView;例如:

    private void AddAllDots()
    {
        for(int i = 0 ; i< listView.getChildCount(); i++)
        {
            View v = listView.getChildAt(i);
            ImageView dots = (ImageView) v.findViewById(R.id.ivMandSelection);
            dots.setVisibility(View.VISIBLE);
        }
    }
于 2013-08-16T09:15:05.597 回答