AndroidStudio-导航抽屉和自定义适配器
我已经使用AndroidStudio创建了一个新项目,并且包含了IDE附带的导航抽屉。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
我想修改来自左侧的
导航
,并添加两个文本视图
,其中一个将保存菜单文本,第二个现在只保存一个字母
因此,我创建了一个类来管理我的自定义菜单:
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;
}
}