Android:自定义ArrayAdapter不工作,getView()未被调用

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

我正在将CustomArrayAdapter与ListView一起使用。但是,即使设置了setAdapter,它也不起作用。以下是我的代码片段:

显示listView的PastOrders.java片段

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);