Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Toha_
0 / 0 / 0
Регистрация: 06.07.2016
Сообщений: 115
Завершенные тесты: 1
#1

Retrofit Recyclerview - Программирование Android

06.07.2016, 17:17. Просмотров 293. Ответов 4
Метки нет (Все метки)

Здравствуйте, уважаемые форумчане.

Помогите добавить onScroll в RecyclerView.

Вот код

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
public class MainActivity extends AppCompatActivity {
 
    private static final String TAG = MainActivity.class.getSimpleName();
    private int previousTotal = 0;
    private boolean loading = true;
    private int visibleThreshold = 5;
    int firstVisibleItem, visibleItemCount, totalItemCount;
    private int currentPage = 0;
    private RecyclerView NewsView;
 
    // TODO
    private final static String API_KEY = "KEY";
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
 
        if (API_KEY.isEmpty()) {
            Toast.makeText(getApplicationContext(), "Please obtain your API KEY", Toast.LENGTH_LONG).show();
            return;
        }
 
        NewsView = (RecyclerView) findViewById(R.id.movies_recycler_view);
        NewsView.setHasFixedSize(true);
 
        NewsView.addOnItemTouchListener(
                new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
                    @Override
                    public void onItemClick(View view, int position) {
                        String item_id = ((TextView) view.findViewById(R.id.news_id)).getText().toString();
                        Toast.makeText(MainActivity.this, item_id, Toast.LENGTH_SHORT).show();
                    }
                })
        );
 
 
        final LinearLayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
        NewsView.setLayoutManager(layoutManager);
 
 
 
        NewsView.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))
                {
                    new Catalog().execute();
                    Toast.makeText(MainActivity.this, "12", Toast.LENGTH_SHORT).show();
 
                    loading = true;
                }
            }
 
        });
 
        new Catalog().execute();
    }
 
    public class Catalog extends AsyncTask<String,String,String>
    {
 
        @Override
        protected String doInBackground(String... params)
        {
            ApiInterface apiService =
                    ApiClient.getClient().create(ApiInterface.class);
 
            Call<MovieResponse> call = apiService.getTopRatedMovies(API_KEY, 21*page);
            call.enqueue(new Callback<MovieResponse>() {
                @Override
                public void onResponse(Call<MovieResponse> call, Response<MovieResponse> response) {
                    int statusCode = response.code();
                    List<Movie> movies = response.body().getResults();
                   NewsView.setAdapter(new MoviesAdapter(movies, R.layout.list_item_movie, getApplicationContext()));
                }
 
                @Override
                public void onFailure(Call<MovieResponse> call, Throwable t) 
                {
                    Log.e(TAG, t.toString());
                }
            });
 
 
            return null;
        }
 
        protected void onPostExecute(final String url)
        {
        }
    }
}

Вот как тут правильно построить чтобы заработало навигация, а то сейчас она только 15 страниц выводит и все.

Добавлено через 19 минут
этот скролл есть

NewsView.addOnScrollListener(new RecyclerView.OnScrollListener()


Но он почему та не работает, не подгружает данные.

Добавлено через 13 минут
ПОЖАЛУЙСТА ПОМОГИТЕ ДА, УЖЕ 2-ОЙ день ломаю голову никак не хочет работать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2016, 17:17     Retrofit Recyclerview
Посмотрите здесь:

Библиотека Retrofit - Программирование Android
Мне нужно освоить библиотеку Retrofit.Я нашол урок https://www.youtube.com/watch?v=c5HX_GoyaDs. Я постарался повторить и у меня возникли...

OPTIONS запросы в Retrofit - Программирование Android
Всем привет, никто не сталкивался с данным вопросом? Я нашел в репозитории ретрофита какое-то упоминание но я не знаю как его примернить...

Retrofit 2 post запрос - Программирование Android
Делал реализацию клиент-сервер, в андроид при помощи retrofit. и встретился с проблемой как реализовать POST запрос. ( GET запрос у меня...

Прокладывание маршрута и Retrofit - Программирование Android
Добрый день. Есть проблема с реализацией маршрутов в приложении. Суть проста: есть 2 точки, необходимо их соединить маршрутом. На основе...

Ошибка JSON в Retrofit - Программирование Android
Всем привет! Недавно начал изучение Retrofit как известной библиотеки для REST-запросов. Там всё сильно автоматизировано, например,...

Retrofit, JSON, @POST, @GET - Программирование Android
Уважаемые программисты, прошу вашей помощи! Хожу на курсы по разработке мобильных приложений, месяц, как хожу, мало еще что знаю, но...

Извлечение модели ошибки retrofit + rx - Программирование Android
Работаю с Retrofit и RX. Через Gradle подключаю так: compile 'com.squareup.retrofit2:retrofit:2.0.0' compile...

Работа с SOAP с помощью retrofit - Программирование Android
работа с SOAP с помощью retrofit или похожей библиотекой.. Ребята подскажите как работать с этим чудом SOAP? Как намного проще?

Относительные пути в аннотациях Retrofit - Программирование Android
@GET(&quot;/feeds/flowers.json&quot;) Так аннотируется Get запрос Retrofit, где /feeds/flowers.json путь к Json файлу уже на сервере. А почему в...

Разницы между OkHTTP AND Retrofit - Программирование Android
Добрый вечер, ребята в чем разница между Retrofit и okHTTP это код Retrofit Retrofit retrofit = new Retrofit.Builder() ...

Retrofit 2, POST запрос, авторизация - Программирование Android
Добрый день! На собеседовании (Junior Android Dev) мне дали задание написать приложение с авторизацией. Вот текст задачи: Все методы...

Retrofit 2. Возвращаемое значение == null - Программирование Android
Делаю небольшое приложение для VK. Решил использовать Retrofit 2. Набросал простенький запрос, но в ответ приходит код 200 и null. ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
06.07.2016, 17:24     Retrofit Recyclerview #2
Цитата Сообщение от Toha_ Посмотреть сообщение
построить чтобы заработало навигация, а то сейчас она только 15 страниц выводит и все.
а кто сказать что там больше чем 15?
только я вижу противоречие между "что бы заработало" и "выводит 15 страниц"?
выводит - значит работает
Toha_
0 / 0 / 0
Регистрация: 06.07.2016
Сообщений: 115
Завершенные тесты: 1
06.07.2016, 17:37  [ТС]     Retrofit Recyclerview #3
Сейчас постараюсь правильно поставить вопрос.

Так вот в базе есть 270 позиций, мне нужно чтобы в приложении они не сразу выводил а частично к примеру:

Зашел в категорию подгружается первые 15 позиций, пролистал, подгружается еще 15 и ..... до конца.

Вот как его реализовать помогите да пожалуйста, без вашей помощи не справлюсь.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
06.07.2016, 17:41     Retrofit Recyclerview #4
Конец ScrollView
Toha_
0 / 0 / 0
Регистрация: 06.07.2016
Сообщений: 115
Завершенные тесты: 1
06.07.2016, 19:07  [ТС]     Retrofit Recyclerview #5
Там ничего такого нету, я читал.

Я делал RecyclerView вот это этой структуре, может поймете вы хорошо.

Добавлено через 11 минут
Между тем и мои проектом отличается только постраничная навигация,


page = 15;

У меня постраничная навигация работает через ?api_key=KEY&offset=10 * page

Добавлено через 1 час 5 минут
Ребята, некому помощь да (
Yandex
Объявления
06.07.2016, 19:07     Retrofit Recyclerview
Ответ Создать тему
Опции темы

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