Я работаю над приложением, которое отображает список книг из книг Google API. Когда пользователь нажимает на элемент в списке Показать во фрагменте, я хочу добавить этот элемент в просмотр списка в другом фрагменте (фрагмент избранного), который отображает избранные книги,Я искал в Интернете, но ничего не получил, и я искал здесь, в StackOverFlow, похожие вопросы, но я не смог найти правильный ответ для моего случая. Тем не менее, я слышал о связке, которая использовалась для передачи данных между действиями и фрагментами, поэтому я пытался использовать их в своем коде, но не смог достичь того, чего хочу, потому что элементы myArrayList не являются строками. Вот мой код дляфрагмент, который отображает книги:
public class DisplayBookListFragment extends Fragment {
private BookAdapter bookAdapter;
private List<Book> favouriteArrayList;
public DisplayBookListFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_display_book_list,container, false);
final ListView listView = v.findViewById(R.id.list);
bookAdapter = new BookAdapter(getActivity(), new ArrayList<Book>());
listView.setAdapter(bookAdapter);
favouriteArrayList = new ArrayList<>();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Book b = bookAdapter.getItem(i);
favouriteArrayList.add(b);
//This my fragment that i need adding clicked items to
FavouritesFragment favouritesFragment = new FavouritesFragment();
Bundle bundle = new Bundle();
bundle.putStringArrayList("List 1", favouriteArrayList);
favouritesFragment.setArguments(bundle);
}
});
return v;
}
}
и это мой макет:
<RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView
android:layout_width="match_parent"
android:id="@+id/list"
android:layout_height="match_parent"
android:divider="@null"
android:dividerHeight="0dp"
android:drawSelectorOnTop="true"/>
</RelativeLayout>
и мой адаптер:
public class BookAdapter extends ArrayAdapter<Book> {
public BookAdapter(Context context,List<Book> bookList){
super(context,0,bookList);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View listViewItem = convertView;
if (listViewItem == null){
listViewItem = LayoutInflater.from(getContext()).inflate(R.layout.list_item,parent,false);
}
Book b = getItem(position);
TextView publishOfDate = listViewItem.findViewById(R.id.publish_date);
publishOfDate.setText(b.getPublishDate());
TextView bookName = listViewItem.findViewById(R.id.name_of_book);
bookName.setText(b.getBookName());
TextView author = listViewItem.findViewById(R.id.author);
author.setText(b.getAuthor());
TextView language = listViewItem.findViewById(R.id.language);
language.setText(b.getLang());
TextView rating = listViewItem.findViewById(R.id.rating);
rating.setText(formatDecimalToString(b.getRating()));
return listViewItem;
}
private String formatDecimalToString(Double v){
DecimalFormat decimalFormat = new DecimalFormat("0.0");
return decimalFormat.format(v);
}
}
anyOne может помочь мне решить эту проблему *