【问题标题】:Remove items from ExpandableList adapter从 ExpandableList 适配器中删除项目
【发布时间】:2021-03-03 01:58:16
【问题描述】:

我有以下问题:

我已经实现了一个 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 吗? 谢谢你!

【问题讨论】:

  • 您确定要删除带有listCategoria.remove(groupPosition); 的正确列表项吗?尝试拨打listCategoria.remove(codVia)
  • 谢谢,我也试过了,但它似乎不起作用。我尝试删除地图,ArrayList ...但对我没有任何作用:(

标签: android adapter expandablelistview


【解决方案1】:

试试这个:

@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;
}

【讨论】:

    【解决方案2】:

    您可以通过执行以下 3 个步骤来刷新可扩展列表视图。

    • 成功删除项目表单数据库后,您可以刷新数据 通过删除该特定项目或再次检索整个数据来列出。

    • 刷新数据列表后可以拨打notifyDataSetChanged()

    • 如果notifyDataSetChanged() 不起作用,那么您可以设置可扩展 以新数据列表作为开始的列表视图。

    【讨论】:

      猜你喜欢
      • 2017-09-06
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      相关资源
      最近更新 更多