从 ExpandableList 适配器中删除项目
Remove items from ExpandableList adapter
我有以下问题:
我实现了一个 ExpandableListView,它向我展示了数据库中的一系列记录。每个项目旁边都有一个用于删除该项目的按钮。
我的问题是从 ExpandableList 中删除项目的方法工作正常,但我希望它在完成删除时刷新 ExpandableList 并再次显示没有该项目的记录。
这是我的适配器方法:
public class BaseExpandableListViasAdapterde extends BaseExpandableListAdapter {
(...)
public BaseExpandableListViasAdapterde(ArrayList<String> listCategoria, Map<String, ArrayList<String>> mapChild, Map<String, ArrayList<String>> mapChildNomVias, Context context) {
this.listCategoria = listCategoria;
this.mapChild = mapChild;
this.mapChildNomVias = mapChildNomVias;
this.context = context;
}
(...)
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, final ViewGroup parent) {
final String itemCod = (String)getChild(groupPosition, childPosition);
final String itemNom = (String)getChild2(groupPosition, childPosition);
convertView = LayoutInflater.from(context).inflate(R.layout.filter_child_layout_vias, null);
TextView tvChildCodigoVia = convertView.findViewById(R.id.txtViasCod);
TextView tvChildNombreVia = convertView.findViewById(R.id.txtViasnombre);
ImageView buttonTrash= convertView.findViewById(R.id.imgBorrarVia);
buttonTrash.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String codVia = (String) getChild(groupPosition, childPosition);
borraViasBD(codVia); //This method delete the item in the database. Works fine.
//Try this, but don't work
listCategoria.remove(groupPosition);
notifyDataSetChanged();
}
});
tvChildCodigoVia.setText(itemCod);
tvChildNombreVia.setText(itemNom);
return convertView;
}
(...)
}
知道如何刷新 ExpandableList 吗?
谢谢!
试试这个:
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
String itemCod = (String)getChild(groupPosition, childPosition);
String itemNom = (String)getChild2(groupPosition, childPosition);
convertView = LayoutInflater.from(context).inflate(R.layout.filter_child_layout_vias, null);
TextView tvChildCodigoVia = convertView.findViewById(R.id.txtViasCod);
TextView tvChildNombreVia = convertView.findViewById(R.id.txtViasnombre);
ImageView buttonTrash= convertView.findViewById(R.id.imgBorrarVia);
buttonTrash.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String codVia = (String) getChild(groupPosition, childPosition);
borraViasBD(codVia); //This method delete the item in the database. Works fine.
//Try this
ArrayList<String> listCod = mapChild.get((String)getgroup(groupPosition));
ArrayList<String> listNom = mapChildNomVias.get((String)getgroup(groupPosition));
listCod.remove(childPosition); // Updated
listNom.remove(childPosition); // Updated
notifyDataSetChanged();
}
});
tvChildCodigoVia.setText(itemCod);
tvChildNombreVia.setText(itemNom);
return convertView;
}
您可以通过执行以下 3 个步骤来刷新可扩展列表视图。
成功删除项目表单数据库后,您可以刷新数据
通过删除该特定项目或再次检索整个数据来列出。
刷新数据列表后可以调用notifyDataSetChanged()
如果notifyDataSetChanged()
不工作那么你可以设置可扩展
以新数据列表为开头的列表视图。
我有以下问题:
我实现了一个 ExpandableListView,它向我展示了数据库中的一系列记录。每个项目旁边都有一个用于删除该项目的按钮。
我的问题是从 ExpandableList 中删除项目的方法工作正常,但我希望它在完成删除时刷新 ExpandableList 并再次显示没有该项目的记录。
这是我的适配器方法:
public class BaseExpandableListViasAdapterde extends BaseExpandableListAdapter {
(...)
public BaseExpandableListViasAdapterde(ArrayList<String> listCategoria, Map<String, ArrayList<String>> mapChild, Map<String, ArrayList<String>> mapChildNomVias, Context context) {
this.listCategoria = listCategoria;
this.mapChild = mapChild;
this.mapChildNomVias = mapChildNomVias;
this.context = context;
}
(...)
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, final ViewGroup parent) {
final String itemCod = (String)getChild(groupPosition, childPosition);
final String itemNom = (String)getChild2(groupPosition, childPosition);
convertView = LayoutInflater.from(context).inflate(R.layout.filter_child_layout_vias, null);
TextView tvChildCodigoVia = convertView.findViewById(R.id.txtViasCod);
TextView tvChildNombreVia = convertView.findViewById(R.id.txtViasnombre);
ImageView buttonTrash= convertView.findViewById(R.id.imgBorrarVia);
buttonTrash.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String codVia = (String) getChild(groupPosition, childPosition);
borraViasBD(codVia); //This method delete the item in the database. Works fine.
//Try this, but don't work
listCategoria.remove(groupPosition);
notifyDataSetChanged();
}
});
tvChildCodigoVia.setText(itemCod);
tvChildNombreVia.setText(itemNom);
return convertView;
}
(...)
}
知道如何刷新 ExpandableList 吗? 谢谢!
试试这个:
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
String itemCod = (String)getChild(groupPosition, childPosition);
String itemNom = (String)getChild2(groupPosition, childPosition);
convertView = LayoutInflater.from(context).inflate(R.layout.filter_child_layout_vias, null);
TextView tvChildCodigoVia = convertView.findViewById(R.id.txtViasCod);
TextView tvChildNombreVia = convertView.findViewById(R.id.txtViasnombre);
ImageView buttonTrash= convertView.findViewById(R.id.imgBorrarVia);
buttonTrash.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String codVia = (String) getChild(groupPosition, childPosition);
borraViasBD(codVia); //This method delete the item in the database. Works fine.
//Try this
ArrayList<String> listCod = mapChild.get((String)getgroup(groupPosition));
ArrayList<String> listNom = mapChildNomVias.get((String)getgroup(groupPosition));
listCod.remove(childPosition); // Updated
listNom.remove(childPosition); // Updated
notifyDataSetChanged();
}
});
tvChildCodigoVia.setText(itemCod);
tvChildNombreVia.setText(itemNom);
return convertView;
}
您可以通过执行以下 3 个步骤来刷新可扩展列表视图。
成功删除项目表单数据库后,您可以刷新数据 通过删除该特定项目或再次检索整个数据来列出。
刷新数据列表后可以调用
notifyDataSetChanged()
如果
notifyDataSetChanged()
不工作那么你可以设置可扩展 以新数据列表为开头的列表视图。