Как исправить код для отображения данных из Firebase? - PullRequest
0 голосов
/ 02 апреля 2019

Я уже задаю аналогичный вопрос. Когда я нажимаю textview(header_news from firebase), я переключаюсь на другое действие и загружаю данные из Firebase.В другой деятельности я получаю те же данные (1 новость по идентификатору).Но я хочу, чтобы меня отображали main_news.Я знаю, где проблема, но я не знаю, как это исправить.Я думаю, что проблема в bindviewholder потому что я не добавляю myViewHolder.main_news.setText(Mnews.get(i).getMain_news()); Но я не могу добавить, потому что она будет отображаться в заголовке новостей .... PS Извините за мой английский, я надеюсь, вы понимаете меня.

Код адаптера:

    public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.MyViewHolder> {

    Context Mcontext;
    ArrayList<News> Mnews;


    public NewsAdapter(Context Mcontext, ArrayList<News> Mnews)
    {
        this.Mnews = Mnews;
        this.Mcontext = Mcontext;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        return new MyViewHolder(LayoutInflater.from(Mcontext).inflate(R.layout.news_view, viewGroup, false));
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
        final News news = Mnews.get(i);
        myViewHolder.news_date.setText(Mnews.get(i).getDatenews());
        myViewHolder.news_header.setText(Mnews.get(i).getHeader_news());

        Picasso.get().load(Mnews.get(i).getImageURL()).into(myViewHolder.news_picture);

        myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent intent = new Intent(Mcontext, NewsActivity.class);
                intent.putExtra("idnews", news.getIdnews());
                Mcontext.startActivity(intent);

            }
        });

    }

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

    class MyViewHolder extends RecyclerView.ViewHolder {

        TextView news_date, news_header, main_news;
        ImageView news_picture;

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

            news_date = (TextView) itemView.findViewById(R.id.news_date);
            news_header = (TextView) itemView.findViewById(R.id.news_header);
            news_picture = (ImageView) itemView.findViewById(R.id.news_picture);
        }
    }
}

И код активности:

    public class NewsActivity extends AppCompatActivity {
    String idnews;
    TextView main_news;
    DatabaseReference reference;
    TextView news_date;
    RecyclerView recyclerView;
    Intent intent;
    ArrayList<News> Nlist;
    NewsAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_news);

        recyclerView = findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getApplicationContext());
        linearLayoutManager.setStackFromEnd(true);
        recyclerView.setLayoutManager(linearLayoutManager);
        main_news = findViewById(R.id.main_news);
        intent = getIntent();
        idnews = intent.getStringExtra("idnews");

        Nlist = new ArrayList<News>();
        reference = FirebaseDatabase.getInstance().getReference("News").child(idnews);
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                Nlist.clear();
                News news = dataSnapshot.getValue(News.class);
                main_news.setText(news.getNews_main());
                Nlist.add(news);

                adapter = new NewsAdapter(getApplicationContext(), Nlist);
                recyclerView.setAdapter(adapter);

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(NewsActivity.this, "Что то не так", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

Структура моей базы данных

Надеюсь, вы мне поможете.

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