android:从数据库中删除后 ListView 中的数据刷新

标签 android listview

我有一个从数据库中检索数据并将其显示在 ListView 中的应用程序。我有一个自定义适配器。因此,当我按下“删除”按钮时,会显示列表中每一行的删除按钮。如果我按那个,数据库中的特定行将被删除,并且 ListView 中也应该反射(reflect)出来。问题是,它没有反射(reflect)此更改,我应该关闭应用程序并重新打开或移动到其他一些 Activity 并返回以查看更新的结果。

所以我的问题是:我在哪里调用 notifyDataSetChanged() 方法来立即更新它?

这是我的自定义适配器 View :

public View getView(int position,  View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    MenuListItems menuListItems = menuList.get(position);


      if (convertView == null) {
           LayoutInflater inflater = (LayoutInflater) c
             .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
           convertView = inflater.inflate(R.layout.customlist, parent, false);

          }

      Button ck = (Button) convertView.findViewById(R.id.delbox);
      if(i){

          ck.setVisibility(View.VISIBLE);}
          else{               
              ck.setVisibility(View.GONE);        

      }


        ck.setTag(menuListItems.getSlno());
        ck.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                final Integer Index = Integer.parseInt((String) v.getTag());
                final DataHandler enter = new DataHandler(c);
                DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        switch (which){
                        case DialogInterface.BUTTON_POSITIVE:
                            //Yes button clicked
                            enter.open();
                            enter.delet(Index);
                            enter.close();
                            notifyDataSetChanged();
                            dialog.dismiss();

                            break;

                        case DialogInterface.BUTTON_NEGATIVE:
                            //No button clicked
                            dialog.dismiss();
                            break;
                        }
                    }
                };

                AlertDialog.Builder builder = new AlertDialog.Builder(c);
                builder.setMessage("Are you sure you want to Delete?").setPositiveButton("Yes", dialogClickListener)
                    .setNegativeButton("No", dialogClickListener).show();

            }
        });


            TextView id = (TextView) convertView.findViewById(R.id.tvhide);
            id.setText(menuListItems.getSlno());

          TextView title = (TextView) convertView.findViewById(R.id.tvtitle);
          title.setText(menuListItems.getTitle());
          TextView phone = (TextView) convertView.findViewById(R.id.tvpnumber);
          phone.setText(menuListItems.getPhone());
         // ck.setChecked(menuList.)
          notifyDataSetChanged();
          return convertView;
}

最佳答案

您需要通过 adapter.remove(adapter.getItem(position)); 从 ListView 的适配器中删除数据,然后在适配器上调用 notifyDataSetChanged() .

关于android:从数据库中删除后 ListView 中的数据刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27640658/

相关文章:

java - 如何强制android启动LoginActivity

android - PhoneGap : Application crash taking portrait picture

android - 如何禁用其他连接的.if wifi可用

android - 保存 ListView 项目

java - 如何突出显示 ExpandableListView 的组行

java - 从 ListView 中的 ImageButton 创建新 Activity

java - Android初学者图形布局不起作用

java - 在特定时间启动我的 Phonegap 应用程序(闹钟)

android - 按下后退按钮时刷新 ListView - android

java - ListView 未显示/出现 android studio