Невозможно открыть список подкатегорий всякий раз, когда пользователь нажимает на элемент категории.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Невозможно открыть список подкатегорий всякий раз, когда пользователь нажимает на элемент категории.

Сообщение Гость »


я пытаюсь получить подкатегории всякий раз, когда пользователь нажимает на элемент категории, я использую recyclerview для вызова элементов категории и получаю все данные из внешней базы данных в форме JSON.

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

Пример данных в формате JSON

JSON-данные основной категории [ { "идентификатор": 1, "category_name": "Математика", "q_count": 1, "category_image": "qcategory_Category тест 1. dPy#NQHA7#PXwRG.png", "под_категории": 2 }, { «идентификатор»: 2, "category_name": "Общие знания", "q_count": 2, "category_image": "qcategory_Category test 2.png", "под_категории": 2 } ] подкатегория JSON [ { "идентификатор": 6, "sub_category_name": "Арифметика", "sub_category_image": "subcategory_Applenull", «идентификатор_категории»: 1, "вопрос": 0 }, { "идентификатор": 7, "sub_category_name": "Геометрия", "sub_category_image": "subcategory_Banananull", «идентификатор_категории»: 1, "вопрос": 0 }, { "идентификатор": 8, "sub_category_name": "Вопросы Gk, класс 1", "sub_category_image": "subcategory_Carrotnull", «идентификатор_категории»: 2, "вопрос": 0 }, { "идентификатор": 9, "sub_category_name": "Вопросы Gk, класс 2", "sub_category_image": "subcategory_Radishnull", «идентификатор_категории»: 2, "вопрос": 0 } ] Код создания данных

Основная категория `публичный класс Quiz_Category реализует Serializable { //публичный длинный идентификатор; общедоступный длинный идентификатор; общедоступная строка имя_категории; общедоступная строка Category_image; общедоступная строка q_count; публичный строковый вопрос; общественный длинный getId() { вернуть идентификатор; } общественный недействительный setId (длинный идентификатор) { this.id = идентификатор; } публичная строка getCategory_image() { вернуть категорию_изображение; } public void setCategory_image (String Category_image) { this.category_image = Category_image; } public List questions_list = новый ArrayList(); }` Данные подкатегорий ` общедоступный внутренний идентификатор; общедоступная строка sub_category_name; общедоступная строка sub_category_image; общественный Длинный Category_id; публичный строковый вопрос; общественный int getId() { вернуть идентификатор; } общественный недействительный setId (int id) { this.id = идентификатор; } публичная строка getSub_Category_image() { вернуть sub_category_image; } public void setSub_Category_image (String sub_category_image) { this.sub_category_image = sub_category_image; } ` Администратор моей категории

public ViewHolder(View v) { супер (в); имя_категории = (TextView) v.findViewById(R.id.txtcustomrow); below_name = (TextView) v.findViewById(R.id.q_count); Category_image = (ImageView) v.findViewById(R.id.img); lyt_parent = (CardView) v.findViewById(R.id.Ripple_layout); } } публичный фильтр getFilter() { вернуть мФильтер; } // Предоставляем подходящий конструктор (зависит от типа набора данных) public QuizAdapter (Context ctx, List items) { this.ctx = ctx; original_items = предметы; filtered_items = элементы; список категорий = элементы; ctx.getTheme().resolveAttribute(R.attr.selectableItemBackground, mTypedValue, true); mBackground = mTypedValue.resourceId; } @Override public QuizAdapter.ViewHolder onCreateViewHolder (родитель ViewGroup, int viewType) { Представление v = LayoutInflater.from(parent.getContext()).inflate(R.layout.quiz_list, родительский, false); v.setBackgroundResource(mBackground); ViewHolder vh = новый ViewHolder (v); вернуть вх; } // Заменяем содержимое представления (вызываемого менеджером макета) @Override public void onBindViewHolder(@NonNull ViewHolder Holder,final int Position) { окончательная Quiz_Category p = filtered_items.get(позиция); //финальная Quiz_Category p = Categorylist.get(position); Holder.category_name.setText(p.category_name); imgloader.displayImage(Constant.getURLimgQuizCategory(p.category_image), Holder.category_image); Holder.bellow_name.setText(p.question); Строковый URL = DataManager.catphotourl+ Categorylist.get(position).category_image; пытаться { url = URLDecoder.decode(url, "UTF-8"); URL = url.replaceAll(" ", "%20"); } catch (UnsupportedEncodingException e1) { // TODO Автоматически сгенерированный блок catch e1.printStackTrace(); } //holder.category_image.setImage(url); Holder.lyt_parent.setOnClickListener(новый View.OnClickListener() { @Override public void onClick (Просмотр) { Намерение я = новое намерение (ctx, ActivitySubCategoryDetails.class); i.putExtra(ActivitySubCategoryDetails.EXTRA_OBJCT, p); ctx.startActivity(я); } }); } // Возвращаем размер вашего набора данных (вызываемого менеджером компоновки) @Override общественный ИНТ getItemCount () { вернуть список категорий!= ноль? список категорий.размер(): 0; //возвращаем filtered_items.size(); } @Override public long getItemId (int Position) { return filtered_items.get(position).id; } частный класс ItemFilter расширяет фильтр { @Override protected FilterResults PerformFiltering (ограничение CharSequence) { Строковый запрос = ограничение.toString().toLowerCase(); Результаты FilterResults = новый FilterResults(); окончательный список list = original_items; окончательный список result_list = новый ArrayList(list.size()); for (int i = 0; i < list.size(); i++) { Строка str_title = list.get(i).category_name; если (str_title.toLowerCase().contains(query)) { result_list.add(list.get(i)); } } результаты.значения = список_результатов; results.count = result_list.size(); возврат результатов; } в настоящее время я использую FilterResults для фильтрации подкатегорий.

Загрузчик категорий

публичный класс QuizListLoader расширяет AsyncTask { Строковый URL = Constant.getURLquizcategory(); частный Gson gson = новый Gson(); общедоступный интерфейс TaskListener { public void onFinished (результат List); } // Это ссылка на связанный прослушиватель частный окончательный TaskListener TaskListener; public QuizListLoader (прослушиватель TaskListener) { this.taskListener = слушатель; } @Override protected List doInBackground(String... params) { Список ArrayList = новый ArrayList(); Quiz_Category[] f = null; пытаться { URL-адрес = новый URL-адрес (URL); HttpURLConnection con = (HttpURLConnection) url.openConnection(); Gson gson = новый Gson(); Читатель JsonReader = новый JsonReader(новый InputStreamReader(con.getInputStream())); f = gson.fromJson(читатель, Quiz_Category[].class); for (Quiz_Category цветок: f) { list.add(цветок); } } catch (Исключение е) { е.printStackTrace(); вернуть ноль; } список возврата; } @Override protected void onPostExecute (результат List) { super.onPostExecute(результат); // В onPostExecute мы проверяем, действителен ли прослушиватель если (this.taskListener != null) { this.taskListener.onFinished(результат); } } Загрузчик подкатегорий

публичный класс SubCat_List_Loader расширяет AsyncTask { Строковый URL = Constant.getURLsubcategory(); частный Gson gson = новый Gson(); общедоступный интерфейс TaskListener { public void onFinished (результат List); } // Это ссылка на связанный прослушиватель частный окончательный TaskListener TaskListener; public SubCat_List_Loader (прослушиватель TaskListener) { this.taskListener = слушатель; } @Override защищенный список doInBackground(String... параметры) { Список ArrayList = новый ArrayList(); Подкатегория [] е = ноль; пытаться { URL-адрес = новый URL-адрес (URL); HttpURLConnection con = (HttpURLConnection) url.openConnection(); Gson gson = новый Gson(); Читатель JsonReader = новый JsonReader(новый InputStreamReader(con.getInputStream())); f = gson.fromJson(читатель, SubCategory[].class); for (Подкатегория цветок: f) { list.add(цветок); } } catch (Исключение е) { е.printStackTrace(); вернуть ноль; } список возврата; } @Override protected void onPostExecute (результат List) { super.onPostExecute(результат); // В onPostExecute мы проверяем, действителен ли прослушиватель если (this.taskListener != null) { this.taskListener.onFinished(результат); } } Я пытаюсь открыть подкатегории в отдельном просмотре recyclerview каждый раз, когда пользователь нажимает на категорию. Все подкатегории имеют собственный Category_id.

спасибо.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»