AndroidStudio-导航抽屉和自定义适配器

AndroidStudio-导航抽屉和自定义适配器,android,android-studio,custom-adapter,Android,Android Studio,Custom Adapter,我已经使用AndroidStudio创建了一个新项目,并且包含了IDE附带的导航抽屉。 我想修改来自左侧的导航,并添加两个文本视图,其中一个将保存菜单文本,第二个现在只保存一个字母 因此,我创建了一个类来管理我的自定义菜单: public class MioMenu{ private String voce; private String immagine; public MioMenu(String immagine, String voce){ th

我已经使用AndroidStudio创建了一个新项目,并且包含了IDE附带的导航抽屉。
我想修改来自左侧的
导航
,并添加两个
文本视图
,其中一个将保存菜单文本,第二个现在只保存一个字母

因此,我创建了一个类来管理我的自定义菜单:

public class MioMenu{
    private String voce;
    private String immagine;

    public MioMenu(String immagine, String voce){
        this.immagine = immagine;
        this.voce = voce;
    }

    public String getVoce(){
        return this.voce;
    }

    public String getImmagine(){
        return this.immagine;
    }
}
然后我创建了我的
CustomAdapter
,并覆盖了
getView
方法:

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class MioMenuAdapter extends ArrayAdapter<MioMenu>{

    public MioMenuAdapter(Context context, int textViewResourceId, MioMenu[] objects){
        super(context, textViewResourceId, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.custom_row_menu_laterale, null);
        TextView icona = (TextView)convertView.findViewById(R.id.iconaCustom);
        TextView testo = (TextView)convertView.findViewById(R.id.testoCustom);

        MioMenu mm = getItem(position);
        icona.setText(mm.getImmagine());
        testo.setText(mm.getVoce());

        return convertView;
    }
}
正如您所见,我已经注释掉了
setAdapter
,并且创建了一个
列表来保存我的自定义对象,然后将其传递给我的自定义适配器,但是IDE在下面用一条红线阻止了我

MioMenuAdapter mio_adapter = new MioMenuAdapter(getActivity(), R.layout.custom_row_menu_laterale, list);
出现此错误时:


我不知道我在这里做错了什么

更改适配器并将其作为第三个参数传递列表,或者将其从构造函数中删除,因为我看不到您在适配器中的任何位置都在使用它。这可能也是您的一个错误,因此,如果您想使用您在构造函数中传递的列表,那么您的适配器实现应该如下所示:

 import android.content.Context;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
 import android.widget.TextView;

 public class MioMenuAdapter extends ArrayAdapter<MioMenu>{

 List list;

public MioMenuAdapter(Context context, int textViewResourceId, List myList){
    super(context, textViewResourceId, objects);
    list=myList;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent){
    LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.custom_row_menu_laterale, null);
    TextView icona = (TextView)convertView.findViewById(R.id.iconaCustom);
    TextView testo = (TextView)convertView.findViewById(R.id.testoCustom);

    MioMenu mm = list.get(position);
    icona.setText(mm.getImmagine());
    testo.setText(mm.getVoce());

    return convertView;
  }
}
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
公共类MioMenuAdapter扩展了ArrayAdapter{
名单;
公共MioMenuAdapter(上下文上下文,int textViewResourceId,列表myList){
超级(上下文、textViewResourceId、对象);
列表=myList;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater充气器=(LayoutInflater)getContext().getSystemService(Context.LAYOUT\u充气器\u SERVICE);
convertView=充气机。充气(R.layout.custom\u row\u menu\u laterale,null);
TextView icona=(TextView)convertView.findViewById(R.id.iconaCustom);
TextView testo=(TextView)convertView.findViewById(R.id.testoCustom);
MioMenu mm=列表获取(位置);
icona.setText(mm.getImmagine());
testo.setText(mm.getVoce());
返回视图;
}
}

Adapter中的第三个参数必须是数组not List,或者在Adapter中进行更改以使其成为列表,并让我知道它是否解决了问题。谢谢,我完全错过了它
MioMenuAdapter mio_adapter = new MioMenuAdapter(getActivity(), R.layout.custom_row_menu_laterale, list);
 import android.content.Context;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
 import android.widget.TextView;

 public class MioMenuAdapter extends ArrayAdapter<MioMenu>{

 List list;

public MioMenuAdapter(Context context, int textViewResourceId, List myList){
    super(context, textViewResourceId, objects);
    list=myList;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent){
    LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.custom_row_menu_laterale, null);
    TextView icona = (TextView)convertView.findViewById(R.id.iconaCustom);
    TextView testo = (TextView)convertView.findViewById(R.id.testoCustom);

    MioMenu mm = list.get(position);
    icona.setText(mm.getImmagine());
    testo.setText(mm.getVoce());

    return convertView;
  }
}