代码之家  ›  专栏  ›  技术社区  ›  Thofiq Ahmed

删除后如何更新ListView

  •  0
  • Thofiq Ahmed  · 技术社区  · 6 年前

    这里,我通过实现list adapter来使用自定义适配器来支持列表项中的按钮。当我单击“删除”按钮时,它会删除当前行。但是我不能刷新这个列表视图。

    文件结构是mainActivity->fragmentClass->此列表适配器的自定义类。

    public class Category_ListView_Custom_Adapter extends BaseAdapter implements ListAdapter{
    
    private Realm realm;
    private ArrayList<String> list = new ArrayList<>();
    private Context context;
    
    public Category_ListView_Custom_Adapter(ArrayList<String> list, Context context){
        this.list = list;
        this.context = context;
    }
    
    @Override
    public int getCount() {
        return list.size();
    }
    
    @Override
    public Object getItem(int i) {
        return list.get(i);
    }
    
    @Override
    public long getItemId(int i) {
        return i;
    }
    
    @Override
    public View getView(final int i, View view, ViewGroup viewGroup) {
        View view1 = view;
        realm = Realm.getDefaultInstance();
    
        if(view == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.category_listview_row, null);
        }
        TextView listItemText = (TextView) view.findViewById(R.id.item);
        listItemText.setText(list.get(i));
    
        ImageView edit = (ImageView) view.findViewById(R.id.image);
        ImageView delete = (ImageView) view.findViewById(R.id.delete);
    
        edit.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View view) {
         //       list.remove(i);
         ///       Toast.makeText(view.getContext(), "hey "+list.get(i).toString(), Toast.LENGTH_SHORT).show();
         //       notifyDataSetChanged();
                Intent intent = new Intent(context, AddCategory.class);
                intent.putExtra("category","expense");
                intent.putExtra("subcategory", list.get(i));
                context.startActivity(intent);
            }
        });
    
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                RealmResults<Category> categorylist = realm.where(Category.class).equalTo("Id",i+1).and().equalTo("Subcategory",list.get(i)).findAll();
    
                for (Category category : categorylist) {
    
                    realm.beginTransaction();
                    categorylist.deleteFirstFromRealm();
                    realm.commitTransaction();
    
                    try {
                        context.notifyAll();
                    }catch (Exception e){
                        Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT).show();
                    }
    
                 //   Expense.call_resume
                }
            }
        });
    
        return view;
    }
    

    }

    请帮帮我。谢谢您。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Marko Marović    6 年前

    是的。从错误的视图中删除。尝试使根列表变为静态并执行class.list.get(i).remove或类似的操作。

    另外,尝试在GeT视图中隐藏一个视图。