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

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

24.12.2014, 14:20. Просмотров 625. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2014, 14:20
Ответы с готовыми решениями:

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

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

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

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

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

2
Armagedo
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
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
24.12.2014, 15:26  [ТС] 3
Armagedo, исправил 1...4 на 0..3 и больше не крашится. Благодарю за оперативность
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2014, 15:26

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

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

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


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

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

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