为什么适配器构造函数中的引用不更新?

时间:2013-08-21 13:16:48

标签: android

考虑以下代码:

public class MediaItemAdapter extends BaseAdapter {
    final List<Row> rows;
    public MediaItemAdapter(Activity activity, ArrayList<HashMap<String, String>> data) {
        Log.d("mediaadapter", "listcreation: " + data.size());
        rows = new ArrayList<Row>();// member variable
        int i=0;
        for (HashMap<String, String> addvert:data) {

            rows.add(new MeadiaRow((LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE), addvert));
            Log.d("mediaadapter", addvert.get("title"));
            if (i % 20 == 0) {
                rows.add(new SourseRow((LayoutInflater) activity
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE)));
            }
            i++;
        }
    }

它是我的适配器的构造函数。在每20个MediaRows之后,我希望添加一个sourse行。它有ArrayList data。数据始终为空的问题。我根据这个tutorial构建了我的适配器。在教程中,事情很好。但是在教程初始数据集是预定义的。在我的cade中,初始数据集为空,并在工作时间填充。但是,在我致电notifyDataSetChanged后,data仍然为空(即使数据集不是) 如何获取数据的更新值?

1 个答案:

答案 0 :(得分:0)

需要做什么 - 是移动

int i=0;
        for (HashMap<String, String> addvert:data) {

            rows.add(new MeadiaRow((LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE), addvert));
            Log.d("mediaadapter", addvert.get("title"));
            if (i % 20 == 0) {
                rows.add(new SourseRow((LayoutInflater) activity
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE)));
            }
            i++;
        }

从适配器覆盖适配器类

中的notifyDataSetChanged