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

android:如何用一个适配器填充同一活动的两个列表视图,android,listview,android-adapter,custom-adapter,Android,Listview,Android Adapter,Custom Adapter,我有两个列表和一个自定义适配器。两个列表具有相同的结构 mDrawerList = (ListView) findViewById(R.id.lv_left_drawer); mDrawerListBottom = (ListView) findViewById(R.id.lv_left_drawer_bottom); adapter = new DrawerItemsCustomAdapter(this); mDrawerList.setAdapter(adapter); a

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

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);
问:如何识别哪个ListView正在访问适配器,如何在适配器类中识别

什么是&如何使用

   public Object getItem(int arg0) {
    return arg0;
}

public long getItemId(int arg0) {
    return arg0;
}

@Override
public int getItemViewType(int position) {
    return super.getItemViewType(position);
}

谢谢。

在两个不同的ListView中使用相同的适配器引用是一种不好的做法,因为修改基础数据需要将更改通知两个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);

但是,不清楚您在哪里初始化了这些适配器的数据列表,因为它不是适配器的参数

跨两个不同的ListView使用适配器的同一引用是不好的做法,因为修改基础数据需要将更改通知两个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);

但是,不清楚您在哪里初始化了这些适配器的数据列表,因为它不是适配器的参数

你的问题不是很清楚。我想你是糊涂了,但如果我错了,请纠正我

您正在重用同一对象为另一个ListView创建适配器,从而覆盖第一个ListView。我假设您希望单独处理它们,因此应使用新对象:

adapter1 = new DrawerItemsCustomAdapter(this);
mDrawerList.setAdapter(adapter1);    
adapter2 = new DrawerItemsCustomAdapter(this);
mDrawerListBottom.setAdapter(adapter2);
否则,任何时候都无法确定ListView的哪个实例正在使用适配器


您应该为不同的ListView使用不同的适配器。适配器应该知道如何以单一方式填充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);    
            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);
                    }
                });
您正在重用同一对象为另一个ListView创建适配器,从而覆盖第一个ListView。我假设您希望单独处理它们,因此应使用新对象:

adapter1 = new DrawerItemsCustomAdapter(this);
mDrawerList.setAdapter(adapter1);    
adapter2 = new DrawerItemsCustomAdapter(this);
mDrawerListBottom.setAdapter(adapter2);
否则,任何时候都无法确定ListView的哪个实例正在使用适配器

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

mDrawerList=(ListView)findViewById(R.id.lv\u left\u drawer);
            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);
                    }
                });
mDrawerListBottom=(ListView)findViewById(R.id.lv\u left\u drawer\u bottom); adapter=新的DroperItemCustomAdapter(此); mDrawerList.setAdapter(适配器); adapter1=新抽屉式定制适配器(本); mDrawerListBottom.setAdapter(适配器1); setOnItemClickListener(新的OnItemClickListener(){ @凌驾 public void onItemClick(AdapterView父对象、视图、整型位置、长id){ 字符串s=适配器.getItem(位置); } }); setOnItemClickListener(新的OnItemClickListener()){ @凌驾 public void onItemClick(AdapterView父对象、视图、整型位置、长id){ 字符串s=adapter1.getItem(位置); } });
mDrawerList=(ListView)findViewById(R.id.lv\u left\u抽屉);
mDrawerListBottom=(ListView)findViewById(R.id.lv\u left\u drawer\u bottom);
adapter=新的DroperItemCustomAdapter(此);
mDrawerList.setAdapter(适配器);
adapter1=新抽屉式定制适配器(本);
mDrawerListBottom.setAdapter(适配器1);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串s=适配器.getItem(位置);
}
});
setOnItemClickListener(新的OnItemClickListener()){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串s=adapter1.getItem(位置);
}
});

如何在adapter类中标识您为什么需要这些信息?您所说的标识哪个ListView正在访问适配器是什么意思,您正在传递
ArrayList
检查它,为什么有两行写着
adapter=new drawerItemCustomAdapter(此)?谢谢,我很困惑。。。每个ListView的adapter对象是一个完美的答案。谢谢大家如何在adapter类中识别您为什么需要这些信息?您所说的识别哪个ListView正在访问适配器是什么意思,您正在传递
ArrayList
检查它,为什么有两行写着
adapter=new-drawerItemCustomAdapter(这个)?谢谢,我很困惑。。。每个ListView的适配器对象是完美的答案。谢谢大家