Как показать содержимое файла в recyclerview? - PullRequest
0 голосов
/ 05 июня 2019

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

Мой файл содержит данные, как показано ниже

123

345

567

Я использовал буферизованный ридер и поток ввода для чтения файла

Вот класс для recyclerAdapter

public class RecyclerAdapter extends 
    RecyclerView.Adapter<RecyclerAdapter.Phone> {

List<PhoneNumber> phoneNumbers;

public RecyclerAdapter(List<PhoneNumber> phoneNumbers) {
    this.phoneNumbers = phoneNumbers;
}

@NonNull
@Override
public Phone onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.text,viewGroup,false);
    Phone phone = new Phone(view);
    return phone;
}

@Override
public void onBindViewHolder(@NonNull Phone phone, int i) {

    phone.textView.setText(phoneNumbers.get(i).number);
}

@Override
public int getItemCount() {
    return phoneNumbers.size();
}

public class Phone extends RecyclerView.ViewHolder {
    TextView textView;
    public Phone(@NonNull View itemView) {
        super(itemView);
        textView = itemView.findViewById(R.id.txt);
    }
}

}

Вот код моего класса

public class ScheduledFragment extends Fragment {
String[] strings;
RecyclerView listView;

List<PhoneNumber> phoneNumbers;

public ScheduledFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_scheduled, container, false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    listView = view.findViewById(R.id.list);

    ReadFile();
    initialiseAdapter();



}


private void initialiseAdapter() {
    listView.setHasFixedSize(true);
    listView.setLayoutManager(new LinearLayoutManager(getContext()));
    RecyclerAdapter recyclerAdapter = new RecyclerAdapter(phoneNumbers);
    listView.setAdapter(recyclerAdapter);

}




private void ReadFile() {
    phoneNumbers = new ArrayList<>();
    try {
        InputStream inputStream = getActivity().getAssets().open("phone.txt");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));



        boolean hasNext = true;

        while (hasNext) {
            String line = bufferedReader.readLine();
            phoneNumbers.add(new PhoneNumber(line));
            hasNext = line != null;
        }

        inputStream.close();
    } catch (IOException e) {
        //log the exception
    }
}

}


class PhoneNumber {
    String number;

    public PhoneNumber() {

    }
    public PhoneNumber(String number) {
        this.number = number;
    }
}

Я получаю только первую строчку в представлении переработчика

Ожидаемые результаты:

123

345

567

Результаты, которые я получаю:

123

1 Ответ

0 голосов
/ 05 июня 2019

Попробуйте улучшить ваше время, вам не нужна переменная для этого:

while (true) {
  String line = bufferedReader.readLine();
  if(line == null) {
     break;
  } else if (line.equals("")) {
     phoneNumbers.add(new PhoneNumber("\n"));
     /*I'm not sure if you really want "/n" breaks*/
  } else {
     phoneNumbers.add(new PhoneNumber(line));
  }
  Log.d("test", line);
}

пс: для соглашения используйте заглавные буквы только для Классы не методы (readFile не ReadFile)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...