Member 13926061 Ответов: 1

Отобразите данные json ниже в recyclerview.


{ "ценности": [{
"deviceParam": "11",
"чтение": "0"
}, {
"deviceParam": "12",
"чтение": "14910"
}, {
"deviceParam": "14",
"чтение": "1"
}, {
"deviceParam": "13",
"чтение": "254"
}],
"deviceId": "Huelight2",
"deviceType": "0",
"roomType": "0",
"noOfValues": "4"
}


MainActivity:
public class MainActivity расширяет AppCompatActivity {

@Ручная коррекция
protected void onCreate(Bundle savedInstanceState) {
супер.метод onCreate(savedInstanceState);
setContentView(R. layout.activitymain);
ViewPager viewpager = findViewById(R. id.pager);
ViewPagerAdapter adapter=новый ViewPagerAdapter(getSupportFragmentManager());
Строка json = {
"ценности": [{
"deviceParam": "11",
"чтение": "0"
}, {
"deviceParam": "12",
"чтение": "14910"
}, {
"deviceParam": "14",
"чтение": "1"
}, {
"deviceParam": "13",
"чтение": "254"
}],
"deviceId": "Huelight2",
"deviceType": "0",
"roomType": "0",
"noOfValues": "4"
}

JSONObject rootJsonObj = новый JSONObject();
пробовать {
rootJsonObj = новый JSONObject(json);
JSONArray items = new JSONArray(rootJsonObj.get("deviceDetails").toString());
for (int i = 0; i < Integer.parseInt(rootJsonObj.get("configuredDevices").toString()); i++) {
{
JSONObject item = items.getJSONObject(i);

System.out.println("jsonObject" + i + ": "+ item);
}
}
} catch (исключение e) {
Log.d("JSONFeedTask", e.getLocalizedMessage());

}
}

класс ViewPagerAdapter расширяет FragmentPagerAdapter {
частная окончательный список<fragmentlist&ГТ; mFragmentList = новый ArrayList и Л;&ГТ;();
частная окончательный список<строка> У mFragmentTitleList = новый ArrayList и Л;&ГТ;();

public ViewPagerAdapter(менеджер FragmentManager) {
супер(менеджер);
}

@Ручная коррекция
public FragmentList getItem(int position) {
return mFragmentList.get(позиция);
}

@Ручная коррекция
public int getCount() {
вернуться mFragmentList.размер();
}

public void addFragment(фрагмент списка фрагментов, заголовок строки) {
mFragmentList.add(фрагмент);
mFragmentTitleList.add(название);
}

@Ручная коррекция
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(позиция);
}

}
}

Myrecycleradapter:

открытый класс MyItemRecyclerViewAdapter расширяет RecyclerView.Адаптер<myitemrecyclerviewadapter.viewholder> {

частный окончательный список<dummycontent.dummyitem> mValues;
частный окончательный список фрагментов.OnListFragmentInteractionListener mListener;

public MyItemRecyclerViewAdapter(List<dummycontent.dummyitem> items, FragmentList.Слушатель OnListFragmentInteractionListener) {
mValues = элементы;
mListener = слушатель;
}

@Ручная коррекция
public ViewHolder onCreateViewHolder(родительская группа ViewGroup, int viewType) {
Вид = LayoutInflater.(вышестоящее.метода getcontext())
.надуть(Р. макет.fragment_item_list, родитель, ложь);
возврат нового держателя вида(view);
}

@Ручная коррекция
public void onBindViewHolder(final ViewHolder holder, int position) {
держатель.mItem = mValues.get(позиция);
держатель.mIdView.помощью setText(mValues.вам(должность).идентификатор);
держатель.mContentView.помощью setText(mValues.вам(должность).содержание);

holder.mView.setOnClickListener(новый вид.OnClickListener() {
@Ручная коррекция
общественного недействительными onclick(посмотреть V) {
if (null != mListener) {
// Уведомить активный интерфейс обратных вызовов (действие, если
// фрагмент прикрепляется к одному), что элемент был выбран.
mListener.onListFragmentInteraction(держатель.митем);
}
}
});
}

@Ручная коррекция
public int getItemCount() {
вернуться mValues.размер();
}

public class ViewHolder расширяет RecyclerView.ViewHolder {
публичный окончательный вид mView;
public final TextView mIdView;
public final TextView mContentView;
общественное недовольство.DummyItem митем;

public ViewHolder(просмотр просмотра) {
супер(вид);
mView = вид;
mIdView = (виджет TextView) смотреть.команду findViewById(Р. ИД.полей EditText);
mContentView = (TextView) view.findViewById(R. id.editText2);
}

@Ручная коррекция
публичная строка toString() {
возвращение супер.метод toString() + " '" + mContentView.то gettext() + "'";
}
}
}

FragmentList:
открытый класс FragmentList расширяет фрагмент {

// TODO: настройка имен аргументов параметров
частная статические заключительные строки ARG_COLUMN_COUNT = "столбец-количество";
// TODO: Настройка параметров
private int mColumnCount = 1;
частный OnListFragmentInteractionListener mListener;
частный список<string> list;

публичный список фрагментов() {
list = getArguments().getStringArrayList("данные");
//Toast.makeText(, "", тост.LENGTH_SHORT).показать();
Системы.из.код println(список.метод toString());
if (getArguments() != null) {
mColumnCount = getArguments().getInt(ARG_COLUMN_COUNT);

}
}
// TODO: настройка инициализации параметров
@SuppressWarnings("неиспользуемый")
публичный статический метод newinstance FragmentList(инт свойств) {
FragmentList fragment = новый список фрагментов();
Bundle args = новый пакет();
аргументы.putInt(ARG_COLUMN_COUNT, свойств);
фрагмент.setArguments(аргументы);
вернуть фрагмент;
}

@Ручная коррекция
public void onCreate(Bundle savedInstanceState) {
супер.метод onCreate(savedInstanceState);
}

@Ручная коррекция
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Вид = насос.надуть(Р. макета.fragment_item, контейнер, false);
// Установите адаптер
если (вид с помощью оператора instanceof RecyclerView) {
Контекст context = view.getContext();
RecyclerView recyclerView = (RecyclerView) просмотр;
if (mColumnCount <= 1){
recyclerView.setLayoutManager(новый LinearLayoutManager(контекст));
}
еще {
recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount));
}
recyclerView.setAdapter(new MyItemRecyclerViewAdapter(DummyContent.Предметы, млистенер));
}
возвращение смотреть;
}

Что я уже пробовал:

Я могу читать json и могу поджарить сообщение.Мне нужно отобразить данные под recyclerview, но я не совсем понимаю, как анализировать данные из внутреннего файла json, так как большинство онлайн-примеров используют http-ссылки.Я уже реализовал recyclerview вместе со списком фрагментов, поэтому мне нужны некоторые указатели в части отображения. или я использую неправильную концепцию для отображения данных?.Я впервые работаю с концепциями java и android.
у меня есть fragmentlist и recyclerviewadapter можно ли заполнить с помощью 2 компонентов вышеприведенного кода.

1 Ответов

Рейтинг:
2

Member 13926061

видел ссылки выложил и спасибо за ответ УР.У меня есть внутренний json & не http-ссылка можно ли использовать путь к файлу или его эквивалент в приложении для отображения на recyclerview? без создания нового адаптера и использования существующего адаптера?.
и нужно ли мне создавать класс holder для viewholder для отображения данных вместе с новым списком для заполнения данных под фрагментами?.
У меня уже есть fragmentlist и recycleradapter, поэтому я думал об использовании существующих для заполнения списка, возможно ли это сделать? или необходимость создать новый адаптер и новый список?

Richard MacCutchan

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

Member 13926061

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