Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
shulyakyarik
11 / 11 / 3
Регистрация: 28.03.2014
Сообщений: 156
#1

Ошибка при прокрутке списка - Программирование Android

24.12.2014, 14:20. Просмотров 551. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при прокрутке списка (Программирование Android):

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

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

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

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

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

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

2
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
24.12.2014, 15:01 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Лог не весь, поди...

Добавлено через 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
Привет! Вот еще темы с ответами:

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

ListView: сбивается содержимое ImageView элемента при скроллинге + как сделать выделение пункта списка при нажатии? - Программирование Android
1. Есть свой класс ContactsSimpleCursorAdapter, в методе public void bindView(View view, Context context, Cursor c) которого происходит...

Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? - Программирование Android
Здравствуйте, подскажите, пожалуйста, как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? ...

Изображения в прокрутке (ScrolView) - Программирование Android
Необходимо загрузить изображения из интернета и вывести их в горизонтальном виде в ScrolView. Может есть простой пример, который это...


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

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

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