Android:自定义ArrayAdapter不工作,getView()未被调用
我正在将CustomArrayAdapter与ListView一起使用。但是,即使设置了setAdapter,它也不起作用。以下是我的代码片段: 显示listView的PastOrders.java片段Android:自定义ArrayAdapter不工作,getView()未被调用,android,android-fragments,android-listview,android-arrayadapter,Android,Android Fragments,Android Listview,Android Arrayadapter,我正在将CustomArrayAdapter与ListView一起使用。但是,即使设置了setAdapter,它也不起作用。以下是我的代码片段: 显示listView的PastOrders.java片段 public class PastOrders extends Fragment { private View view; private ListView pastOrdersList; private Context context; private ArrayList<Order&g
public class PastOrders extends Fragment {
private View view;
private ListView pastOrdersList;
private Context context;
private ArrayList<Order> orders;
public PastOrders() {
}
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
view = inflater.inflate(R.layout.fragment_pastorders, container, false);
context = getActivity();
pastOrdersList = (ListView) view.findViewById(R.id.pastOrdersList);
ParseQuery<ParseObject> query = ParseQuery.getQuery("Order");
query.whereEqualTo("user_id", Vars.currentUser);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if(e != null) {
Log.e("TAG", e.getLocalizedMessage());
} else {
ArrayList<Order> orders = new ArrayList<Order>();
Log.i("TAG", objects.toString());
for (ParseObject object: objects) {
Order temp = new Order();
temp.orderId = object.getObjectId();
temp.date = object.getCreatedAt();
temp.status = object.getString("status");
Log.i("TAG", "orderID: "+ object.getObjectId() + " temp orderID"+ temp.orderId);
orders.add(temp);
Vars.pastOrders.add(object);
}
Log.i("TAG", "after for loop past orders: "+ orders.toString());
PastOrdersAdapter pastOrdersAdapter = new PastOrdersAdapter(getActivity(), R.layout.past_orders_row, orders);
pastOrdersList.setAdapter(pastOrdersAdapter);
}
}
});
return view;
}
@Override
public void onResume() {
super.onResume();
}
}
显示ListView的片段的fragment_pastorders.xml布局文件
<?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="match_parent" >
<ListView
android:id="@+id/pastOrdersList"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</RelativeLayout>
listview中每一行的pass_orders_row.xml布局文件
<?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="150dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="150dp"
android:orientation="vertical"
android:id="@+id/LinearLayout01">
<TextView
android:id="@+id/orderId"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/date"
android:textStyle="italic"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/status"/>
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_next_item"
android:layout_toRightOf="@id/LinearLayout01"
android:layout_centerVertical="true"
android:id="@+id/details"/>
</RelativeLayout>
我也尝试过打印getCount,它是非零的。我什么都试过了。好心帮忙
谢谢
在自定义适配器的构造函数中,您忘记将orders参数传递给父构造函数。因此,您的适配器不知道显示什么。您正在向适配器传递空列表命令。然后在适配器中使用不同的列表:Vars.pastOrders。 因此,适配器的列表为空。 替换此项:
PastOrdersAdapter pastOrdersAdapter =
new PastOrdersAdapter(getActivity(), R.layout.past_orders_row, orders);
为此:
PastOrdersAdapter pastOrdersAdapter =
new PastOrdersAdapter(getActivity(), R.layout.past_orders_row, Vars.pastOrders);
您是否尝试了extends BaseAdapter而不是extends ArrayAdapter@arpitgoyal2008@Pooja:谢谢你的建议。我已经尝试了BaseAdapter,它正在工作。但是,我仍然想知道为什么ArrayAdapter不起作用。我以前使用过ArrayAdapter,并且一直在工作。发布您收到的相关日志消息,跳过日志中的垃圾消息。在这种情况下,在不知道日志输出的情况下很难调试代码。感谢@Gaetan的回复。看起来是个错误。你好,提问者,我实际上也是人口列表顺序。所以,这不是问题。是的,你是对的,我没有看到,很高兴你的问题解决了
PastOrdersAdapter pastOrdersAdapter =
new PastOrdersAdapter(getActivity(), R.layout.past_orders_row, orders);
PastOrdersAdapter pastOrdersAdapter =
new PastOrdersAdapter(getActivity(), R.layout.past_orders_row, Vars.pastOrders);