Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
1

Вылетает при прокрутке

06.07.2016, 10:54. Просмотров 834. Ответов 11
Метки нет (Все метки)

Доброе утро. Тут небольшая проблема возникла.

У меня в ListView формируется список категорий, их порядка 1000 а может и больше, подгружаются они с сервера там все предусмотрено (LIMIT, OFFSET).

В приложение все нормально формируется, но когда листаешь, несколько раз пролистал он и вылетает приложение без ошибок.

В чем может быть проблема.


//Занимается формированием прокрутки
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
        item.addOnScrollListener(new RecyclerView.OnScrollListener()
        {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
 
                visibleItemCount = recyclerView.getChildCount();
                totalItemCount = layoutManager.getItemCount();
                firstVisibleItem = layoutManager.findFirstVisibleItemPosition();
 
                if (loading) {
                    if (totalItemCount > previousTotal) {
                        loading = false;
                        previousTotal = totalItemCount;
                        currentPage++;
                    }
                }
                if (!loading && (totalItemCount - visibleItemCount)
                        <= (firstVisibleItem + visibleThreshold)) {
                    // End has been reached
 
                    new Loading().execute(String.valueOf(item_id));
 
                    loading = true;
                }
            }
 
 
        });

//AsyncTasc
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
    public class Loading extends AsyncTask<String,String,String>
    {
 
        @Override
        protected String doInBackground(String... params)
        {
            HttpUrl.Builder urlBuilder = HttpUrl.parse("url").newBuilder();
            urlBuilder.addQueryParameter("item_id",params[0]);
            urlBuilder.addQueryParameter("offset", Integer.toString(10 * currentPage));
            String url = urlBuilder.build().toString();
            Request request = new Request.Builder().url(url).build();
            Response response = null;
 
            try
            {
                response = client.newCall(request).execute();
 
                String jsonData = response.body().string();
                JSONObject Jobject = new JSONObject(jsonData);
 
                if (Jobject != null)
                {
                    listJSON = Jobject.getJSONArray("list");
 
                    for (int i = 0; i < listJSON.length(); i++)
                    {
                        JSONObject catalog = listJSON.getJSONObject(i);
                        ListModel list = new ListModel();
                        
                        list.setNewsTitle(catalog.getString("name"));
 
                        ItemList.add(list);
                    }
                }
 
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
 
            return null;
        }
 
        protected void onPostExecute(final String file_url)
        {
            getActivity().runOnUiThread(new Runnable() {
                public void run()
                {
                    adapter.notifyDataSetChanged();
 
                }
            });
        }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2016, 10:54
Ответы с готовыми решениями:

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

Ошибка при прокрутке списка
Создается список нормально, вниз прокручивается ,а когда обратно скролить вверх то при отображении...

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

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

11
2870 / 2282 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.07.2016, 10:55 2
Цитата Сообщение от Shamsik Посмотреть сообщение
вылетает приложение без ошибок
так не бывает
0
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
06.07.2016, 11:04  [ТС] 3
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
07-06 11:02:55.397 13100-13111/com.project.one I/art: Background sticky concurrent mark sweep GC freed 20730(2MB) AllocSpace objects, 146(7MB) LOS objects, 22% free, 36MB/46MB, paused 8.842ms total 38.872ms
07-06 11:02:55.433 13100-13248/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:55.487 13100-13246/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:55.526 13100-13245/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:55.564 13100-13256/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:55.601 13100-13248/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:55.643 13100-13246/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:55.684 13100-13245/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:55.859 13100-13256/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:55.931 13100-13248/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:55.982 13100-13246/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:55.991 13100-13245/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:56.023 13100-13256/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:56.042 13100-13248/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:56.079 13100-13246/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:56.097 13100-13245/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:56.112 13100-13256/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:56.133 13100-13248/com.project.one W/Bitmap: Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
07-06 11:02:56.289 13100-13105/com.project.one E/art: Unexpected time out during dump checkpoint.
07-06 11:02:56.289 13100-13105/com.project.one A/art: art/runtime/barrier.cc:90] Check failed: count_ == 0 (count_=-1, 0=0) Attempted to destroy barrier with non zero count
07-06 11:02:56.289 13100-13105/com.project.one A/art: art/runtime/runtime.cc:366] Runtime aborting --- recursively, so no thread-specific detail!
07-06 11:02:56.289 13100-13105/com.project.one A/art: art/runtime/runtime.cc:366] 
                                                                     
                                                                     --------- beginning of crash
07-06 11:02:56.469 13100-13105/com.project.one W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ###
07-06 11:02:56.469 13100-13105/com.project.one W/google-breakpad: Chrome build fingerprint:
07-06 11:02:56.469 13100-13105/com.project.one W/google-breakpad: 1.0
07-06 11:02:56.469 13100-13105/com.project.one W/google-breakpad: 1
07-06 11:02:56.469 13100-13105/com.project.one W/google-breakpad: 7d26c012-4f20-450a-b207-c04dc7980276
07-06 11:02:56.469 13100-13105/com.project.one W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ###
07-06 11:02:56.469 13100-13105/com.project.one A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 13105 (Jit thread pool)
Добавлено через 22 секунды
Паблито, Вот внизу скинул лог
0
2870 / 2282 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.07.2016, 11:05 4
я уверен - это не весь лог и не в момент вылета
0
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
06.07.2016, 11:08  [ТС] 5
Вот прикрепил файлом лог.

new 4.zip
0
2870 / 2282 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.07.2016, 11:12 6
я бы использовал RecyclerView вместо ListView
0
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
06.07.2016, 11:14  [ТС] 7
Я его и использую

XML
1
2
3
4
5
6
7
    <android.support.v7.widget.RecyclerView
        android:id="@+id/list"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:background="@color/divider_grey"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical" />
0
2870 / 2282 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.07.2016, 11:17 8
Цитата Сообщение от Shamsik Посмотреть сообщение
У меня в ListView
Цитата Сообщение от Shamsik Посмотреть сообщение
Я его и использую
а где весь код адаптера?
0
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
06.07.2016, 11:20  [ТС] 9
//Adapter
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
public class ListAdapter extends RecyclerView.Adapter<NListView>
{
    private List<ListModel> feedItemList;
    private Context mContext;
 
    public ListAdapter (Context mContext, List<ListModel> feedItemList)
    {
        this.feedItemList = feedItemList;
        this.mContext = mContext;
    }
 
    @Override
    public NListView onCreateViewHolder(ViewGroup parent, int viewType)
    {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_list, null);
        NListView viewHolder = new NListView(view);
 
        return viewHolder;
    }
 
    @Override
    public void onBindViewHolder(NListView holder, int position)
    {
        ListModel feedItem = feedItemList.get(position);
 
        holder.textName.setText(feedItem.getTitle());
    }
 
    @Override
    public int getItemCount()
    {
        return (null != feedItemList ? feedItemList.size() : 0);
    }
}
//ViewHolder
Java
1
2
3
4
5
6
7
8
9
10
public class NListView extends RecyclerView.ViewHolder
{
    public  TextView textName ;
    public NListView (View view)
    {
        super(view);
 
        this.textName = (TextView) view.findViewById(R.id.title);
    }
}
0
2870 / 2282 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.07.2016, 11:25 10
1. холдер должен быть статическим классом внутри адаптера!

2. ItemList - откуда Loader знает про этот лист?

надо клещами вытягивать весь код потому что ТЫ решаешь что важно и что стоит показать чувакам с форума, а что не стоит показывать так как ты уверен что это не важно и они там сами разберутся?
0
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
06.07.2016, 11:32  [ТС] 11
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
//Main
private List<ListModel> ItemList = new ArrayList<ListModel>();
 
//ListModel.java
public class ListModel
{
    private String title;
 
 
    public ListModel(String title)
    {
        this.title     =   title;
    }
 
    public String getTitle()
    {
        return news_title;
    }
 
    public void setTitle(String title)
    {
        this.title = title;
    }
 
}
Добавлено через 1 минуту
Java
1
2
3
4
5
6
7
8
//Main
private ListAdapter adapter;
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
      
          adapter = new ListAdapter(getActivity(), ItemList);
    }
0
2870 / 2282 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.07.2016, 11:37 12
холдер надо сделать статическим внутри адаптера - с этого надо начать
все равно куски кода...какой же тяжелый случай...все, передаю тему толерантным людят
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2016, 11:37

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

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

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

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

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


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

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

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