Добавление элемента listView из фрагмента в другой фрагмент При нажатии на иконку - PullRequest
0 голосов
/ 30 сентября 2019

Я работаю над приложением, которое отображает список книг из книг 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 может помочь мне решить эту проблему *

...