пытаясь оптимизировать просмотр списка и не удалось - PullRequest
0 голосов
/ 06 апреля 2011

Я пытаюсь принять рекомендацию Ромена Гая из 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 (собственный метод)

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

вижу holder = (ViewHolder) convertView.getTag();.Но я не вижу, где вы вызываете setTag() для convertView в теле if (convertView == null) {...}.

Итак, я полагаю, вы забыли строку:

convertView.setTag(holder);
0 голосов
/ 06 апреля 2011

Скорее всего, вы получаете ArrayIndexOutOfBound Exception. Используйте getCount () метод адаптера массива, чтобы объявить размер списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...