Как преобразовать массив из firestore в строку для отображения в текстовом представлении для виджета - PullRequest
0 голосов
/ 06 июня 2019

Я озадачен, почему это не работает.У меня есть массив (daysOfWeek) внутри документа в Firestore, который мне нужно отобразить в держателе представления в представлении реселлера.Строки, целые, длинные и т. Д., Которые я извлекаю из документа, все в порядке, но я не могу понять, как преобразовать массив в строку.Просто для некоторого контекста, массив содержит выбранные пользователем дни недели, и мне нужно соответствующее текстовое представление, чтобы показать все выбранные дни недели.

Вот фрагмент кода моего адаптера:

public class MealPlanDetailsAdapter extends RecyclerView.Adapter<MealPlanDetailsAdapter.MealPlanDetailsViewHolder> {

    private Context adapterContext;
    private ArrayList<MealplanDetails> mealplanDetailsArrayList;

    private final static String TAG = MealPlanDetailsAdapter.class.getSimpleName();

    public MealPlanDetailsAdapter(Context adapterContext, ArrayList<MealplanDetails> mealplanDetailsArrayList) {
        this.mealplanDetailsArrayList = mealplanDetailsArrayList;
        this.adapterContext = adapterContext;
    }

    @NonNull
    @Override
    public MealPlanDetailsAdapter.MealPlanDetailsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        LayoutInflater layoutInflater = LayoutInflater.from(adapterContext);
        View view = layoutInflater.inflate(R.layout.mealplan_card, viewGroup, false);
        return new MealPlanDetailsViewHolder(view);
    }

@Override
    public void onBindViewHolder(@NonNull MealPlanDetailsAdapter.MealPlanDetailsViewHolder mpDetailsViewHolder, int position) {

        // Set days of week

        StringBuilder stringBuilder = new StringBuilder();
        for (Object day : mealplanDetailsArrayList.get(position).getDaysOfWeek())
        {
            stringBuilder.append(day.toString());
            stringBuilder.append(" ");
        }

        String finalDays = stringBuilder.toString();
        Log.d(TAG, "days of the week:" + finalDays);
        mpDetailsViewHolder.tvDaysOfWeek.setText(finalDays);

        // Set restaurant
        // Set menu items
    }

   class MealPlanDetailsViewHolder extends RecyclerView.ViewHolder {

        public tvDaysOfWeek

        public MealPlanDetailsViewHolder(@NonNull View itemView) {
            super(itemView);

            tvDaysOfWeek = itemView.findViewById(R.id.days_week);

        }
    }

Мой переработчик работает нормально.Нет проблем с адаптером.Но это этот массив, который вызывает проблемы.Трассировка стека выглядит следующим образом:

Process: com.healthplan, PID: 20051
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
        at com.healthplan.MealPlanDetailsAdapter.onBindViewHolder(MealPlanDetailsAdapter.java:65)

1 Ответ

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

Эта проблема не имеет ничего общего с Firestore.mpDetailsViewHolder.tvDaysOfWeek просто ноль.Это означает, что ваша строка кода, которая пытается найти TextView, неверна:

tvDaysOfWeek = itemView.findViewById(R.id.days_week);

Вам нужно выяснить, где находится TextView, и правильно его идентифицировать.

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