在这里,我正在从recyclerview的editText中添加和删除项目。添加工作正常,但是当我从数组列表中删除任何项目时,正确的项目被删除,但recyclerview总是删除最后一项。 下面是代码为什么recyclerView总是删除最后一个项目
public static class ViewHolder extends RecyclerView.ViewHolder {
EditText listItemEditText;
TextView addNew;
ImageView removeItem;
public ViewHolder(View view) {
super(view);
listItemEditText = (EditText)view.findViewById(R.id.list_item);
addNew = (TextView)view.findViewById(R.id.add);
removeItem = (ImageView)view.findViewById(R.id.deleteItem);
}
}
@Override
public int getItemCount() {
return listItems.size();
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.listItemEditText.setId(position);
final TextWatcher textWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
try{
listItems.set(position,s.toString());
}catch(Exception e){
listItems.add(position,s.toString());
}
if(s.length() >0 && !edited.get(position)){
edited.set(position, true);
holder.addNew.setVisibility(View.VISIBLE);
}else if(s.length()==0){
holder.addNew.setVisibility(View.GONE);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
};
holder.listItemEditText.addTextChangedListener(textWatcher);
holder.addNew.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
edited.add(position,true);
edited.add(position+1,false);
addEmptyRow(position+1);
v.setVisibility(View.GONE);
}
});
holder.removeItem.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
deleteRow(position,holder);
}
});
}
protected void addEmptyRow(int i) {
listItems.add(i,"");
notifyItemInserted(i);
}
@Override
public NoteListItemsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int arg1) {
View v = LayoutInflater.from(MainActivity.activity).inflate(R.layout.list_notes, parent,false);
ViewHolder holder = new ViewHolder(v);
return holder;
}
private void deleteRow(int position, ViewHolder holder){
Toast.makeText(MainActivity.activity, "position="+position+", Size="+listItems.size(), Toast.LENGTH_SHORT).show();
listItems.remove(position);
for(String ass:listItems){
System.out.println(ass);
}
edited.remove(position);
notifyItemRemoved(position);
notifyDataSetChanged();
}
尝试从活动/片段中提供的列表中删除。删除后做notifiyDataSetChanges。让我知道如果这工作。 –
你的适配器在哪里?什么是listItems? – XxGoliathusxX
我已经在使用它了。@ Ravi Gadipudi – Rookie