我构建了一个Android应用程序,我在<RecyclerView
&gt;中使用<CardView>
。我的问题是当我删除CardView时。如果我有3个<CardView>
并且我删除了一个,则下一个 public void onDismiss(RecyclerView recyclerView, int[] reverseSortedPositions) {
for (int position : reverseSortedPositions) {
Tipss.remove(position);
}
adapter.notifyDataSetChanged();
}
将具有旧版本的大小。
请参阅:
现在当我删除第一个:
我知道问题出在这里:
rv=(RecyclerView)findViewById(R.id.rv);
rv.setHasFixedSize(true);
我使用了错误的adapter.notify方法吗?
修改 主:
public class TipsAdapter extends RecyclerView.Adapter<TipsAdapter.TipsViewHolder> {
public static class TipsViewHolder extends RecyclerView.ViewHolder {
CardView cv;
TextView cardTitle;
TextView cardText;
TipsViewHolder(View itemView) {
super(itemView);
cv = (CardView)itemView.findViewById(R.id.card_view);
cardTitle = (TextView)itemView.findViewById(R.id.card_title);
cardText = (TextView)itemView.findViewById(R.id.card_text);
}
}
List<Tips> Tipss;
TipsAdapter(List<Tips> Tipss){
this.Tipss = Tipss;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public TipsViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cardview, viewGroup, false);
TipsViewHolder pvh = new TipsViewHolder(v);
return pvh;
}
public void addListItem(Tips tip, int i)
{
Tipss.add(tip);
notifyItemInserted(i);
}
@Override
public void onBindViewHolder(TipsViewHolder TipsViewHolder, int i) {
TipsViewHolder.cardTitle.setText(Tipss.get(i).title);
TipsViewHolder.cardText.setText(Tipss.get(i).text);
}
@Override
public int getItemCount() {
return Tipss.size();
}
适配器:
{{1}}
你已经删除了一个,并且那个位于main。
答案 0 :(得分:0)
在您的recycler上设置此方法:
yourRecycler.setHasFixedSize(true)
此内容来自Android APIs docs:
如果事先知道适配器内容的变化无法改变RecyclerView本身的大小,则RecyclerView可以执行多项优化。如果您使用RecyclerView属于此类别,请将其设置为true。
希望它会有所帮助。
答案 1 :(得分:0)
我明白了。问题出在onDismiss方法上。我需要删除视图adapter.notifyItemRemoved(position);
,调用适配器,然后调用此adapter.notifyDataSetChanged();