FavouriteAdapter.java
public class FavouriteAdapter extends RecyclerView.Adapter<FavouriteAdapter.ViewHolder>{
private final Context context;
private ArrayList<FavouriteItems> favData;
public FavouriteAdapter(ArrayList<FavouriteItems>favData, Context context){
this.favData = favData;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.tab_two,parent,false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
final FavouriteItems favouriteItems = favData.get(position);
holder.titleTabTwo.setText(favouriteItems.getTitle());
holder.descTabTwo.setText(favouriteItems.getDescription());
holder.publishedAtTabTwo.setText(favouriteItems.getPublishedAt());
Picasso.get().load(favouriteItems.getImageUrl()).placeholder(R.drawable.user_placeholder)
.into(holder.imageNewsTabTwo);
holder.btnExplore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(v.getContext(), ExploreNews.class);
i.putExtra("newsUrl", favouriteItems.getDetailUrl());
v.getContext().startActivity(i);
}
});
holder.shareTabTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_TEXT, favouriteItems.getDetailUrl()+ "\n\nDownload DailyFeed for more exciting and instant news!");
v.getContext().startActivity(i);
}
});
}
@Override
public int getItemCount() {
return favData.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
TextView titleTabTwo,descTabTwo,publishedAtTabTwo;
Button btnExplore;
CheckBox likeTabTwo;
ImageButton shareTabTwo;
ImageView imageNewsTabTwo;
LinearLayout layoutTabTwo;
public ViewHolder(@NonNull View itemView) {
super(itemView);
titleTabTwo = itemView.findViewById(R.id.titleTextView_tab_two);
descTabTwo = itemView.findViewById(R.id.descTextView_tab_two);
publishedAtTabTwo = itemView.findViewById(R.id.textViewPublishedAt_tab_two);
btnExplore = itemView.findViewById(R.id.buttonExplore_tab_two);
likeTabTwo = itemView.findViewById(R.id.likeCheckBox_tab_two);
shareTabTwo = itemView.findViewById(R.id.sharebtn_tab_two);
imageNewsTabTwo = itemView.findViewById(R.id.image_news_tab_two);
layoutTabTwo = itemView.findViewById(R.id.layout_tab_two);
}
}
}
TabTwo.java
public class TabTwo extends Fragment {
RecyclerView recyclerView;
ArrayList<FavouriteItems> favData;
FavouriteAdapter favouriteAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_2, container, false);
recyclerView = v.findViewById(R.id.recycler_fragment_two);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
DailyFeedModel.open();
favData = DailyFeedModel.showFavourites();
DailyFeedModel.close();
favouriteAdapter = new FavouriteAdapter(favData, getActivity());
recyclerView.setAdapter(favouriteAdapter);
return v;
}
}
DailyFeedModel.java
public static void insert(int position, String title, String desc, String imgUrl, String url, String date) {
ContentValues cv = new ContentValues();
cv.put(Keys.NEWS_ID,position);
cv.put(Keys.NEWS_HEADER, title);
cv.put(Keys.NEWS_DESC, desc);
cv.put(Keys.NEWS_IMAGE_URL, imgUrl);
cv.put(Keys.NEWS_URL, url);
cv.put(Keys.NEWS_DATE, date);
sqLiteDatabase.insert(Keys.TB_NAME, null, cv);
Log.i("DEV", "VALUES INSERTED SUCCESSFULLY!!");
}
public static ArrayList<FavouriteItems> showFavourites() {
ArrayList<FavouriteItems> favData = new ArrayList<>();
sqLiteDatabase = dbHelper.getReadableDatabase();
String sql = "SELECT * FROM " + Keys.TB_NAME;
Cursor cr = sqLiteDatabase.rawQuery(sql, null);
while (cr.moveToNext()) {
String id = cr.getString(0);
String title = cr.getString(3);
String desc = cr.getString(2);
String imgUrl= cr.getString(4);
String url = cr.getString(1);
String date = cr.getString(5);
favData.add(new FavouriteItems(id,title,desc,imgUrl,url,date));
}
return favData;
}
Когда я добавляю что-то на любимую вкладку,он добавляется, но если на главной странице есть еще одна новость, которую я хочу добавить в избранное, но она находится на той же позиции, что и новость в избранном, она не отображается.
Что я должен сделать, чтобы избежать этого столкновения позиций и убедиться, что все элементы добавляются друг под другом или что самый последний понравившийся элемент отображается первым?