Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
1

Ошибка при прокрутке списка

24.12.2014, 14:20. Просмотров 791. Ответов 2
Метки нет (Все метки)

Создается список нормально, вниз прокручивается ,а когда обратно скролить вверх то при отображении первого элемента краш.
Вот адаптер
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
public class MainActivityAdapter extends BaseAdapter {
 
    Context context;
    LayoutInflater inflater;
 
    public MainActivityAdapter(Context context){
        this.context = context;
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
    @Override
    public int getCount() {
        return 9;
    }
 
    @Override
    public Object getItem(int position) {
        return null;
    }
 
    @Override
    public long getItemId(int position) {
        return 0;
    }
 
    @Override
    public int getViewTypeCount() {
        return 4;
    }
 
    @Override
    public int getItemViewType(int position) {
        switch (position){
            case 1:
                return 1;
            case 2:
            case 3:
            case 4:
            case 5:
                return 2;
            case 6:
                return 3;
            case 7:
            case 8:
            case 9:
                return 4;
            default:
                return 3;
        }
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        switch (position){
            case 0:
                return First(convertView);
            case 1:
            case 2:
            case 3:
            case 4:
                return Second(position,convertView);
            case 5:
                return Third(convertView);
            case 6:
            case 7:
            case 8:
                return Fourth(position,convertView);
            default:
                return new View(context);
        }
    }
 
    View First(View convertView){
        if(convertView==null)
            convertView = inflater.inflate(R.layout.nav_drawer_first,null);
        return convertView;
    }
    View Second(int position,View convertView){
        if(convertView==null){
            convertView = inflater.inflate(R.layout.nav_drawer_second,null);
            TextView tv = (TextView)convertView.findViewById(R.id.textView3);
            ImageView imageView = (ImageView)convertView.findViewById(R.id.imageView);
            switch(position){
                case 1:
                    tv.setText(context.getString(R.string.my_tasks));
                    imageView.setImageResource(R.drawable.ic_action_ic_done_all_black_48dp);
                    break;
                case 2:
                    tv.setText(context.getString(R.string.my_files));
                    imageView.setImageResource(R.drawable.ic_action_ic_cloud_download_black_48dp);
                    break;
                case 3:
                    tv.setText(context.getString(R.string.my_events));
                    imageView.setImageResource(R.drawable.ic_action_ic_event_black_48dp);
                    break;
                case 4:
                    tv.setText(context.getString(R.string.my_transactions));
                    imageView.setImageResource(R.drawable.ic_action_ic_trending_up_black_48dp);
                    break;
            }
        }
        return convertView;
    }
    View Third(View convertView){
        if(convertView==null){
            RelativeLayout rl = new RelativeLayout(context);
            AbsListView.LayoutParams params = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,2);
            rl.setLayoutParams(params);
            rl.setBackgroundColor(Color.parseColor("#EEEFEE"));
            convertView = rl;
        }
        return convertView;
    }
    View Fourth(int position,View convertView){
        if(convertView==null){
            convertView = inflater.inflate(R.layout.nav_drawer_fourth,null);
            TextView tv = (TextView)convertView.findViewById(R.id.textView4);
            switch(position) {
                case 6:
                    tv.setText(context.getString(R.string.stared)); break;
                case 7:
                    tv.setText(context.getString(R.string.company)); break;
                case 8:
                    tv.setText(context.getString(R.string.settings)); break;
            }
        }
        return convertView;
    }
}
Вот логи
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
java.lang.ArrayIndexOutOfBoundsException: length=4; index=4
            at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6739)
            at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5114)
            at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3243)
            at android.widget.AbsListView.onTouchMove(AbsListView.java:3587)
            at android.widget.AbsListView.onTouchEvent(AbsListView.java:3431)
            at android.view.View.dispatchTouchEvent(View.java:7713)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2329)
            at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1568)
            at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2277)
            at android.view.View.dispatchPointerEvent(View.java:7893)
            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3950)
            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3829)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3395)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3445)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3414)
            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3521)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3422)
            at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3578)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3395)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3445)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3414)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3422)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3395)
            at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5535)
            at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5515)
            at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5486)
            at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5615)
            at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
            at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
            at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176)
            at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5588)
            at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5634)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:7
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2014, 14:20
Ответы с готовыми решениями:

При прокрутке listview изображения подгружаются, но происходит "скачок" списка
Здравствуйте. Использую listview и item с текстом и изображениями. При прокрутке listview...

Вылетает при прокрутке
Доброе утро. Тут небольшая проблема возникла. У меня в ListView формируется список категорий, их...

Программа вылетает при прокрутке ListActivity
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Моя программа вылетает при...

Нескролящийся View при прокрутке ScrollView
Здравствуйте. Есть задача сделать View, который при скролинге не уходил, а упирался в верхнюю...

2
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
24.12.2014, 15:01 2
Лучший ответ Сообщение было отмечено shulyakyarik как решение

Решение

Лог не весь, поди...

Добавлено через 9 минут
Для начала обрати внимание

public abstract int getItemViewType (int position)

Added in API level 1
Get the type of View that will be created by getView(int, View, ViewGroup) for the specified item.

Parameters
position The position of the item within the adapter's data set whose view type we want.
Returns
An integer representing the type of View. Two views should share the same type if one can be converted to the other in getView(int, View, ViewGroup). Note: Integers must be in the range 0 to getViewTypeCount() - 1. IGNORE_ITEM_VIEW_TYPE can also be returned.
У тебя же getViewTypeCount() возвращает 4, а значит getView должен возвращать значения 0..3.

В коде же
Java
1
2
3
4
case 7:
case 8:
case 9:
           return 4;
Ферштейн?
1
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
24.12.2014, 15:26  [ТС] 3
Armagedo, исправил 1...4 на 0..3 и больше не крашится. Благодарю за оперативность
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2014, 15:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вызов метода при прокрутке activity
Как обработать событие когда activity прокрутили в самый низ что бы вызвать какой нибудь метод?...

Белый фон при прокрутке listview и actionbar в android 2.1
При прокрутке ListView на Android 2.3 появляется белый фон. Ставил Cache Color Hint на прозрачный...

Сохранить измененные значения EditText в ListView при прокрутке
Добрый день, прошу помощи, т.к. уже долго и безрезультатно пытаюсь решить следующую задачу: ...

Как сделать границы в пространстве ImageView при прокрутке изображения
Как сделать границы в пространстве ImageView при прокрутке большого изображения <ImageView...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.