У меня есть RecyclerView, который должен получать данные из файла XML.Я создал метод, который получает входной файл из переменной, содержащей содержимое XML, затем циклически обрабатывает эти данные и добавляет XML (дочерние узлы) в список (например, ArrayList nameoftheList).список используется в отображаемом методе onBind.
Моя проблема в том, что приложение, запускающее программу утилизации, ничего не показывает!ниже некоторого кода:
Редактировать: внесены предлагаемые изменения
Адаптер (Редактировать)
public class Adapter_recycler extends
RecyclerView.Adapter<RecyclerView.ViewHolder>
{
private String lista;
private ArrayList<Node> listaNodi;
private ArrayList<String> lista_errore;
public Adapter_recycler(String lista,RecyclerView recyclerView) {
this.lista = lista;
listaNodi = new ArrayList<>();
lista_errore = new ArrayList<>();
for (int i=0;i<=5;i++)
lista_errore.add("ERRORE");
try {
LeggiFile();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v;
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.righe_main,parent,false);
return new ViewHolder1(v);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
if(listaNodi.size() == 0)
{
((ViewHolder1)viewHolder).titolo1.setText(lista_errore.get(position));
}else{
((ViewHolder1)viewHolder).titolo1.setText(((Element) listaNodi.get(position)).getAttribute("name"));
}
}
@Override
public int getItemCount() {
if (listaNodi.size() == 0)
return lista_errore.size();
else
return listaNodi.size();
}
Метод XML (циклично и добавлять в список)(Правка)
private void LeggiFile() throws ParserConfigurationException, IOException, SAXException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder DBuilder = factory.newDocumentBuilder();
Node Players = DBuilder.parse(new InputSource(new StringReader(lista)));
Node player = null;
for (int i = 0; i < Players.getChildNodes().getLength(); i++) {
if (player == null) {
player = Players.getFirstChild();
}
else
{player = player.getNextSibling() ;}
listaNodi.add(player);
}
}
Фрагмент (Правка)
public class Fragment_Chat extends Fragment {
private Adapter_recycler adapter;
private RecyclerView recyclerView;
private LinearLayoutManager linearLayoutManager;
private String list = "";
Context context = getActivity();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_fragment__chat, container,
false);
list = ("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<Players>\n" +
"<player name=\"mike\">\n" +
"</player>\n" +
"<player name=\"mike\">\n" +
"</player>\n" +
"<player name=\"mike\">\n" +
"</player>\n" +
"</Players>");
recyclerView = view.findViewById(R.id.recycler);
linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(linearLayoutManager);
adapter = new Adapter_recycler(list,recyclerView,context);
recyclerView.setAdapter(adapter);
return view;
}
}