Entfernen Sie ein Element in RecyclerView - Android
Stehe ich vor einem problem, ich konnte Sie nicht entfernen Sie ein Element in RecyclerView.
Ich bin versucht, suchen im Internet, konnte aber nicht sehen, keine Lösung
Ich bin nach diesem post
Android RecyclerView addition & entfernen von Elementen
Aber ich konnte immer noch nicht entfernen Sie das Element ausgewählt
Unten ist mein code für meine adapter und fragement
RecyclerViewAdapter.java
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
List<VideoDetails> contents2;
Context mContext;
ImageLoader imageLoader;
static final int TYPE_HEADER = 0;
static final int TYPE_CELL = 1;
public RecyclerViewAdapter(List<VideoDetails> contents) {
this.contents2 = contents;
}
public RecyclerViewAdapter(Context context, List<VideoDetails> contents) {
mContext = context;
this.contents2 = contents;
imageLoader = new ImageLoader(context);
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getItemCount() {
return contents2.size();
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
View view = null;
view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item_card_small2, parent, false);
ViewHolder vh = new ViewHolder(view);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder,final int position) {
holder.title.setText(contents2.get(position).getTitle());
holder.image.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Log.d("thien.van","on Click onBindViewHolder");
contents2.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, contents2.size());
}
});
}
public Bitmap getThumbnail(String str) {
Bitmap bMap = ThumbnailUtils.createVideoThumbnail(str, MediaStore.Video.Thumbnails.MINI_KIND);
return bMap;
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView title;
public ImageView image;
public ProgressBar progressBar;
public ViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.title);
image = (ImageView) itemView.findViewById(R.id.thumbnail);
progressBar = (ProgressBar) itemView.findViewById(R.id.progress);
// image.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Log.d("thien.van","onClick getAdapterPosition () = "+getAdapterPosition());
removeAt(getAdapterPosition());
}
}
public void removeAt(int position) {
contents2.remove(position);
notifyDataSetChanged();
}
}
RecyclerViewFragment
public class RecyclerViewFragment extends Fragment {
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private static final int ITEM_COUNT = 2;
private List<Object> mContentItems = new ArrayList<>();
private static List<VideoDetails> mContentItems2 = new ArrayList<>();
public static RecyclerViewFragment newInstance() {
return new RecyclerViewFragment();
}
public static RecyclerViewFragment newInstance(List<VideoDetails> contentItems) {
RecyclerViewFragment myFragment = new RecyclerViewFragment();
// mContentItems = contentItems;
Bundle args = new Bundle();
args.putSerializable("thienvan", (Serializable) contentItems);
myFragment.setArguments(args);
return myFragment;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mContentItems2 = (List<VideoDetails>) getArguments().getSerializable("thienvan");
//Log.d("thien.van","Fragment file name = "+mContentItems2.get(0).getTitle());
return inflater.inflate(R.layout.fragment_recyclerview, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(layoutManager);
//mRecyclerView.setHasFixedSize(true);
mAdapter = new RecyclerViewMaterialAdapter(new RecyclerViewAdapter(getActivity().getBaseContext(),mContentItems2));
mRecyclerView.setAdapter(mAdapter);
/*{
for (int i = 0; i < ITEM_COUNT; ++i)
mContentItems.add(new Object());
mAdapter.notifyDataSetChanged();
}*/
MaterialViewPagerHelper.registerRecyclerView(getActivity(), mRecyclerView, null);
}
//http://android--code.blogspot.com/2015/12/android-recyclerview-add-remove-item.html
}
Konnte ich nicht entfernen Sie ein Element in Adapter-Klasse.
Könnte jemand mir helfen ?
Sie können finden Sie unter in diesem Beispiel in Github Glücklich-code!!!!
InformationsquelleAutor user3157841 | 2016-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um die richtige position zu entfernen, sollten Sie rufen
holder.getAdapterPosition()
und verwenden diesen Wert für alle entfernen und Benachrichtigen Operationen. Android studio zeigt eine Warnung für diese, so stellen Sie sicher, überprüfen Sie die Warnungen, erste. Und warum fürgetItemCount
Sie wieder 2?Damit Ihr code für das entfernen übereinstimmt, die ich gerade geschrieben?
Ich habe resived meinen code angewendet und Ihr vorschlagen, aber noch nicht entfernen
Können Sie fügen Sie einige Bilder, die mit dem Verhalten vor und nach dem entfernen operation gemacht wird?
Nichts ändern, Artikel der recycler-Ansicht wird nicht entfernt, nur contents2 geändert wird
InformationsquelleAutor Iulian Popescu
Entfernen einzelner Elemente
Entfernen "Schwein" aus der Liste.
Entfernen mehrerer Elemente
Entfernen Sie "Camel" und "Schafe" aus der Liste.
Entfernen Sie alle Elemente
Klar, die ganze Liste.
InformationsquelleAutor Suragch