android:如何用一个适配器填充相同活动的两个列表视图

时间:2016-02-08 17:20:43

标签: android listview android-adapter custom-adapter

我有两个清单&一个自定义适配器。两个列表具有相同的结构

 var index = {
 initialize: function () {        
    setTimeout(function () {
        var user = null; 
        if (user == null) {
            window.location.href = "login.html";
        } else {
            //do something more
        }
    }, 500);
}

};
index.initialize();

问:如何识别哪个ListView正在访问适配器,如何在适配器类中识别。

什么是&如何使用 ?

mDrawerList = (ListView) findViewById(R.id.lv_left_drawer);
mDrawerListBottom = (ListView) findViewById(R.id.lv_left_drawer_bottom);

adapter = new DrawerItemsCustomAdapter(this);
mDrawerList.setAdapter(adapter);    
    adapter = new DrawerItemsCustomAdapter(this);
    mDrawerListBottom.setAdapter(adapter);

感谢。

3 个答案:

答案 0 :(得分:1)

在两个不同的ListView上使用相同的适配器引用是不好的做法,因为修改基础数据需要您通知两个更改的列表视图。

所以不是这个

adapter = new DrawerItemsCustomAdapter(this);
mDrawerList.setAdapter(adapter);    
adapter = new DrawerItemsCustomAdapter(this);
mDrawerListBottom.setAdapter(adapter);

只需制作两个独立的适配器。

您可以使用相同的适配器类,因为正如您所说,两个列表具有相同的结构。

DrawerItemsCustomAdapter adapter1 = new DrawerItemsCustomAdapter(this);
mDrawerList.setAdapter(adapter1);    
DrawerItemsCustomAdapter adapter2 = new DrawerItemsCustomAdapter(this);
mDrawerListBottom.setAdapter(adapter2);

目前尚不清楚在哪里初始化这些适配器的数据列表,因为它不是适配器的参数。

答案 1 :(得分:1)

你的问题不是很清楚。我觉得你很困惑,但如果我错了,请纠正我。

您正在重复使用相同的对象为其他ListView创建适配器,从而覆盖第一个。我假设你想单独处理它们,所以你应该使用一个新对象:

adapter1 = new DrawerItemsCustomAdapter(this);
mDrawerList.setAdapter(adapter1);    
adapter2 = new DrawerItemsCustomAdapter(this);
mDrawerListBottom.setAdapter(adapter2);

否则,无法确定ListView的哪个实例随时都在使用适配器。

您应该为不同的ListView使用不同的Adapters。适配器应该知道如何以单一方式填充ListView。

答案 2 :(得分:1)

            mDrawerList = (ListView) findViewById(R.id.lv_left_drawer);
            mDrawerListBottom = (ListView) findViewById(R.id.lv_left_drawer_bottom);

            adapter = new DrawerItemsCustomAdapter(this);
            mDrawerList.setAdapter(adapter);    
            adapter1 = new DrawerItemsCustomAdapter(this);
            mDrawerListBottom.setAdapter(adapter1);

           mDrawerList.setOnItemClickListener(new OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    String s = adapter.getItem(position);
                    }
                });
           mDrawerListBottom.setOnItemClickListener(new OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                  String s = adapter1.getItem(position);
                    }
                });