Я пытаюсь принять рекомендацию Ромена Гая из Google IO в прошлом году о ViewHolder для списка, чтобы оптимизировать представление списка для примера из:
http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/
(спасибо админу)
но всякий раз, когда я пытаюсь пролистать список или даже заставить его немного двигаться, происходит сбой приложения, что происходит? любая помощь будет оценена :)
вот что я сделал>
private class OrderAdapter extends ArrayAdapter<Order> {
private ArrayList<Order> items;
LayoutInflater mInflater;
public OrderAdapter(Context context, int textViewResourceId, ArrayList<Order> items) {
super(context, textViewResourceId, items);
mInflater = LayoutInflater.from(context);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row, parent, false);
holder = new ViewHolder();
holder.tt = (TextView) convertView.findViewById(R.id.toptext);
holder.bt = (TextView) convertView.findViewById(R.id.bottomtext);
} else {
holder = (ViewHolder) convertView.getTag();
}
Order o = items.get(position);
if (o != null) {
if (holder.tt != null) {
holder.tt.setText("Name: " + o.getOrderName());
}
if (holder.bt != null) {
holder.bt.setText("Status: " + o.getOrderStatus());
}
}
return convertView;
}
}
Это сообщение об ошибке, которое я получил, извините, я не знаю, как его отформатировать>
FATAL EXCEPTION: main
java.lang.NullPointerException
на com.softberries.lve.SoftwarePassionView $ OrderAdapter.getView (SoftwarePassionView.java:98)
на android.widget.AbsListView.obtainView (AbsListView.java:1294)
на android.widget.ListView.makeAndAddView (ListView.java:1727)
на android.widget.ListView.fillDown (ListView.java:652)
на android.widget.ListView.fillGap (ListView.java:623)
на android.widget.AbsListView.trackMotionScroll (AbsListView.java:2944)
на android.widget.AbsListView.onTouchEvent (AbsListView.java:2065)
на android.widget.ListView.onTouchEvent (ListView.java:3315)
на android.view.View.dispatchTouchEvent (View.java:3766)
на android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:897)
на android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:936)
на android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:936)
на android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:936)
на android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:936)
на com.android.internal.policy.impl.PhoneWindow $ DecorView.superDispatchTouchEvent (PhoneWindow.java:1671)
на com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1107)
на android.app.Activity.dispatchTouchEvent (Activity.java:2086)
на com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent (PhoneWindow.java:1655)
на android.view.ViewRoot.handleMessage (ViewRoot.java:1785)
на android.os.Handler.dispatchMessage (Handler.java:99)
на android.os.Looper.loop (Looper.java:123)
на android.app.ActivityThread.main (ActivityThread.java:4627)
в java.lang.reflect.Method.invokeNative (родной метод)
в java.lang.reflect.Method.invoke (Method.java:521)
на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626)
at dalvik.system.NativeStart.main (собственный метод)