NullPointerException в SetAdapter с моими друзьямиArrayAdapter - PullRequest
1 голос
/ 24 апреля 2011

Исключение происходит в строке "rowTxt.setText", и я, по жизни, не могу понять, почему.

Вот мой код

    @Override
public View getView(int position, View convertView, ViewGroup parent)
{
    View rowView = convertView;

    if(rowView == null)
    {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        rowView = inflater.inflate(mResourceId, null);
    }

    Friend friend = mFriendsList.get(position);
    TextView rowTxt = (TextView) rowView.findViewById(R.id.rowtext);
    Log.i("name", friend.getmName());
    rowTxt.setText(friend.getmName());

    return rowView;
}

Выход Logcat:

04-24 04: 07: 14.093: DEBUG / AndroidRuntime (553): выключение виртуальной машины 04-24 04: 07: 14.093: WARN / dalvikvm (553): threadid = 1: поток выходит с необработанным исключением (группа = 0x4001d800) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): java.lang.NullPointerException 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): в com.friendsapp.FriendsArrayAdapter.getView (FriendsArrayAdapter.java:46) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.AbsListView.obtainView (AbsListView.java:1315) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.ListView.makeAndAddView (ListView.java:1727) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.ListView.fillDown (ListView.java:652) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.ListView.fillFromTop (ListView.java:709) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.ListView.layoutChildren (ListView.java:1580) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.AbsListView.onLayout (AbsListView.java:1147) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.view.View.layout (View.java:7035) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.LinearLayout.setChildFrame (LinearLayout.java:1249) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.LinearLayout.layoutVertical (LinearLayout.java:1125) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.LinearLayout.onLayout (LinearLayout.java:1042) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.view.View.layout (View.java:7035) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.FrameLayout.onLayout (FrameLayout.java:333) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.view.View.layout (View.java:7035) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.LinearLayout.setChildFrame (LinearLayout.java:1249) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.LinearLayout.layoutVertical (LinearLayout.java:1125) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.LinearLayout.onLayout (LinearLayout.java:1042) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.view.View.layout (View.java:7035) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.widget.FrameLayout.onLayout (FrameLayout.java:333) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.view.View.layout (View.java:7035) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.view.ViewRoot.performTraversals (ViewRoot.java:1045) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.view.ViewRoot.handleMessage (ViewRoot.java:1727) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.os.Handler.dispatchMessage (Handler.java:99) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.os.Looper.loop (Looper.java:123) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на android.app.ActivityThread.main (ActivityThread.java:4627) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на java.lang.reflect.Method.invokeNative (собственный метод) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): в java.lang.reflect.Method.invoke (Method.java:521) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) 04-24 04: 07: 14.152: ОШИБКА / AndroidRuntime (553): в dalvik.system.NativeStart.main (собственный метод)04-24 04: 07: 14.182: WARN / ActivityManager (65): принудительно завершить действие com.friendsapp / .FriendsActivity 04-24 04: 07: 14.973: WARN / ActivityManager (65): Тайм-аут паузы активности для HistoryRecord {44e9c3c8 com.friendsapp / .FriendsActivity} 04-24 04: 07: 17.822: DEBUG / dalvikvm (553): GC_FOR_MALLOC освободил 5842 объекта / 457336 байт за 113 мс 04-24 04: 07: 18.732: INFO / Process (553): отправка сигнала. PID: 553 SIG: 9 04-24 04: 07: 18.772: INFO / WindowManager (65): WIN DEATH: Window {4503df58 AtchDlg: com.friendsapp / com.friendsapp.FriendsActivity paused = false} 04-24 04: 07: 18.772: INFO / ActivityManager (65): процесс com.friendsapp (pid 553) умер. 04-24 04: 07: 18.782: INFO / WindowManager (65): WIN DEATH: Window {44f78f88 com.friendsapp / com.friendsapp.FriendsActivity paused = false} 04-24 04: 07: 26.814: WARN / ActivityManager (65): Тайм-аут уничтожения активности для HistoryRecord {44e9c3c8 com.friendsapp / .FriendsActivity} 04-24 04: 12: 07.102: DEBUG / SntpClient (65): сбой времени запроса: java.net.SocketException: семейство адресов не поддерживается протоколом

РЕДАКТИРОВАТЬ: я выяснил проблему с помощью corlettk. Короче говоря, я назначил свой listadapter следующим образом:

FriendsArrayAdapter fAdapter = new FriendsArrayAdapter(FriendsActivity.this, android.R.simple_list_item_1, mFriendsList);

Я сделал это, потому что изначально у меня был общий listadapter, который не вмещал мой объект Friend; никогда не думал изменить его.

Поэтому, когда setAdapter вошел в мой FriendsArrayAdapter, он выполнил поиск идентификатора simple_list_item_1 для R.id.rowtext, который он не нашел. Исправление было изменить вышеупомянутый вызов на

FriendsArrayAdapter fAdapter = new FriendsArrayAdapter(FriendsActivity.this, R.layout.row_layout, mFriendsList);

(row_layout - это имя моего XML-файла)

1 Ответ

0 голосов
/ 24 апреля 2011

Fly,

Каков результат этого Log.i("name", friend.getmName()); заявления?Если friend не равно NULL, то я предполагаю, что rowTxt равно.Отладка распечатайте его, чтобы узнать ...

Далее я бы догадался, что у вас есть хитрый view-ID;или, возможно, это представление просто не было добавлено в коллекцию.Вам не хватает какого-то кода инициализации ранее?

Приветствия.Кит.

...