There are 2 fragments. The first starts the service that connects to the Internet, reads the necessary data and sends it to another fragment by Broadcast. In the adapter I wrote a method that will add new elements to the list and notify that the data has changed. But from the fragment, for some reason I do not see it. How to be? And how good is a good idea to transmit data by Broadcast?
public class CardsWeatherAdapter extends RecyclerView.Adapter<CardsWeatherAdapter.ViewHolder> { private List<CardObject> mCards = new ArrayList<>(); // этот метод должен вызываться с фрагмента public void addCard(CardObject cardObject){ mCards.add(cardObject); notifyDataSetChanged(); } static class ViewHolder extends RecyclerView.ViewHolder { TextView celsius; TextView fahrenheit; TextView suggestion; TextView aqi; TextView cityName; ImageView cityPicture; ImageView aqiColor; public ViewHolder(View v) { super(v); celsius = (TextView) v.findViewById(R.id.celsius); fahrenheit = (TextView) v.findViewById(R.id.fahrenheit); suggestion = (TextView) v.findViewById(R.id.suggestion); aqi = (TextView) v.findViewById(R.id.aqi_value); cityName = (TextView) v.findViewById(R.id.city_name); cityPicture = (ImageView) v.findViewById(R.id.city_picture); aqiColor = (ImageView) v.findViewById(R.id.aqi_color); } } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_item, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { } @Override public int getItemCount() { return mCards.size(); }
}
public class CardsFragment extends Fragment { public static final String ACTION = "action"; private RecyclerView.Adapter mAdapter; private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { mAdapter. // здесь хочу вызвать метод addCard(), но не получается. } }; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); IntentFilter filter = new IntentFilter(ACTION); LocalBroadcastManager.getInstance(getContext()).registerReceiver(mReceiver, filter); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_cards, container, false); initView(view); return view; }