这可能是简单的答案,但请看一下这个错误。我想让适配器返回一个View。我一直在寻找网络中的所有地方,但仍无法使其正常运行。请帮帮我。
这是我的代码:
MAIN ACTIVITY shortly:
public void setAdapter()
{
adapter = new ListAdapter(this, R.id.list_item, list);
}
AND ADAPTER:
public class ListAdapter extends ArrayAdapter<GifModel> {
private ArrayList<GifModel> objects;
private Context context;
public ListAdapter(Context context, int textViewResourceId, ArrayList<GifModel> objects) {
super(context, textViewResourceId, objects);
this.objects = objects;
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent){
View v = convertView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// HERE IS A CRITICAL ERROR. IT CAN NOT INFLATE THIS LAYOUT AND DO NOT KNOW WHY
v = inflater.inflate(R.layout.newListItem, null);
}
GifModel i = objects.get(position);
if (i != null) {
TextView tt = (TextView) v.findViewById(R.id.nameOfTheItem);
TextView ttd = (TextView) v.findViewById(R.id.dateOfAdded);
if (tt != null){
tt.setText(i.getNameOfIteme());
}
if (ttd != null){
ttd.setText(i.getAddedDate());
}
}
// the view must be returned to our activity
return v;
}
END LIST ITEM VIEW:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="@android:color/darker_gray"
android:id="@+id/newListItem" >
<ImageView
android:id="@+id/listImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="19dp"
android:layout_marginTop="16dp"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/dateOfAdded"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/listImageView"
android:layout_marginLeft="26dp"
android:layout_toRightOf="@+id/listImageView"
android:text="HAHA" />
<TextView
android:id="@+id/nameOfTheItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/dateOfAdded"
android:layout_alignTop="@+id/listImageView"
android:text="UMCUMC" />
<ImageView
android:id="@+id/ratingView"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/nameOfTheItem"
android:layout_marginRight="10dp"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
答案 0 :(得分:2)
你不能使用驼峰名称作为布局文件。唯一允许的字符为a-z,0-9,_
答案 1 :(得分:1)
在适配器的构造函数中声明和初始化LayoutInflater也是一个好主意,getView会在不可预测的时间被调用,并且每次都会为它声明对象会导致大量的内存开销。
我通常会设置我的适配器:
public MyAdapter extends BaseAdapter {
private LayoutInflater layoutInflater;
public MyAdapter(Context context) {
layoutInflater = (LayoutInflater) context.getSystemsService(Context.LAYOUT_INFLATER_SERVICE);
}
// getId,etc...
}
答案 2 :(得分:0)
尝试替换
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
与
((Activity) context).getLayoutInflater();
答案 3 :(得分:0)
您是否尝试过使用其他的inflater?
inflater.inflate(R.layout.newListItem, parent, false);
我有类似的问题,但这解决了它。
答案 4 :(得分:0)
在适配器内添加接口ViewHolder。你可以查看如何做到这一点。 关于你的错误,这应该有效:
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.YourAdapterLayoutt, parent, false);