几天来,我一直在努力将自定义适配器简单地应用于列表视图,希望有人能帮助我解决我出错的地方。
我有一个 ListView (listViewAsItHappens),我想对视图使用自定义适配器,这样我就可以格式化 ListView 的外观。我已经阅读了很多文章,但似乎没有一篇文章像预期的那样工作。
当我调试代码时,它会步进到适配器,但 ListView 中没有显示任何内容。我没有收到任何错误,看起来所有变量/对象都很好地传递。
任何帮助我让 ListView 显示 3 行文本和图像的帮助都会很棒。
ListView list;
String[] itemname ={
"Whistle",
"Football",
"Card"
};
Integer[] imgid={
R.drawable.ic_whistle,
R.drawable.ic_football,
R.drawable.ic_yellowcard
};
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_refscorecard, container, false);
list=(ListView) view.findViewById(R.id.listViewAsItHappens);
asItHappened adapter=new asItHappened(getActivity(), itemname, imgid);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
我的自定义适配器(asithappens_listview 是我的 XML 布局);
public class asItHappened extends ArrayAdapter<asItHappened_List> {
private Activity context;
private String[] eventType;
private final Integer[] imgid;
public asItHappened(Context context, String[] event, Integer[] icon) {
super(context, R.layout.asithappens_listview);
this.eventType=event;
this.imgid=icon;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater=context.getLayoutInflater();
View rowView=inflater.inflate(R.layout.asithappens_listview, null,true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.txtEvent);
ImageView imageView = (ImageView) rowView.findViewById(R.id.imgEvent);
rowView.findViewById(R.id.textView1);
txtTitle.setText(eventType[position]);
imageView.setImageResource(imgid[position]);
return rowView;
}
}
您还没有覆盖的getCount()
方法ArrayAdapter
。您需要在您的客户适配器类中覆盖它并返回需要显示的元素的大小。在您的自定义适配器类中添加类似的内容。
@Override
public int getCount() {
return imgid.length;
}
您可以更改自定义适配器的声明并从 ArrayAdapter<String>
或者为了获得更大的灵活性,您可以BaseAdapter
像这样扩展它,只需将您的自定义适配器类更改为这个。
public class asItHappened extends BaseAdapter {
private Activity context;
private String[] eventType;
private final Integer[] imgid;
public asItHappened(Context context, String[] event, Integer[] icon) {
this.context = context;
this.eventType=event;
this.imgid=icon;
}
@Override
public int getCount() {
return eventType.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater=context.getLayoutInflater();
View rowView=inflater.inflate(R.layout.asithappens_listview, null,true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.txtEvent);
ImageView imageView = (ImageView) rowView.findViewById(R.id.imgEvent);
rowView.findViewById(R.id.textView1);
txtTitle.setText(eventType[position]);
imageView.setImageResource(imgid[position]);
return rowView;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句