我有两个清单&一个自定义适配器。两个列表具有相同的结构
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);
感谢。
答案 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);
}
});