调用 objadapter.removeItem(po);仅当列表被删除时


Call objadapter.removeItem(po); only when list get deleted

我想知道如何做到这一点。

我在活动 A 中有一个listView。当检测到长按时,它会checkMaxID(ID,iD);。如果iD为最大值,则将显示success,删除列表,最后刷新列表。否则,它将显示list cannot be deleted并且不会通过objadapter.removeItem(po);

现在我想要实现的是调用objadapter.removeItem(po); 仅当列表被删除时。如果没有,
objadapter.removeItem(po);不会被召唤。

    listViewUpdate.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                public boolean onItemLongClick(final AdapterView<?> p, View v, final int po, long id) {
                    iD = details1.get(po).getID();
                    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                    builder.setTitle("Delete");
                    builder.setMessage("Are you sure you want to delete?");
                    builder.setIcon(android.R.drawable.ic_dialog_alert);
                    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int ii) {
                            checkMaxID(ID,iD);
                            objadapter.removeItem(po); // only call when list get deleted
                            RetrieveTotalHours(ID);
                        }
                    });
                    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
                            {
                                public void onClick(DialogInterface dialog, int ii) {
                                    dialog.dismiss();
                                }
                            }
                    );
                    builder.show();
                    return true;
                }
            });

   public void checkMaxID(final int foreignKey,final String iD)
    {
        class check extends AsyncTask<Void,Void,String>{
            // ProgressDialog loading;
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                // loading = ProgressDialog.show(Edit_Staff.this,"Updating...","Wait...",false,false);
            }
            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                // loading.dismiss();
                Toast.makeText(getActivity(), s, Toast.LENGTH_LONG).show();
            }
            @Override
            protected String doInBackground(Void... params) {
                HashMap<String,String> hashMap = new HashMap<>();
                hashMap.put(Configs.KEY_ID, iD);
                hashMap.put(Configs.KEY_TWD, String.valueOf(foreignKey));
                RequestHandler rh = new RequestHandler();
                String s = rh.sendPostRequest(Configs.URL_CHECK_ID, hashMap);
                return s;
            }
        }
      check ue = new check();
        ue.execute();
        }

检查 ID.php

<?php
if(isset($_POST['id'], $_POST['twd'])){
    /*Importing our db connection script*/
    require_once('dbConnect.php');
    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s'n", mysqli_connect_error());
        exit();
    }
    $id = mysqli_real_escape_string($con, $_POST['id']);
    $twd = mysqli_real_escape_string($con, $_POST['twd']);
    $sql ="SELECT MAX(id) as MaxId FROM work_details WHERE twd = '$twd'";
    if ($result = mysqli_query($con, $sql)) {
        /* fetch associative array */
        if ($row = mysqli_fetch_row($result)) {
            if($row[0] === $id){
                $sql ="DELETE FROM work_details WHERE id='$id';";
                if ($result = mysqli_query($con, $sql)) {
                    echo 'success';
                }else{
                    echo 'failed';
                }
            }
            else{
            echo 'list cannot be deleted ';
        }
        }
        /* free result set */
    }
    /* close connection */
    mysqli_close($con);
}
?>

你需要在你的PHP脚本中添加一些json:

<?php
$json = array();
if(isset($_POST['id'], $_POST['twd'])){
    /*Importing our db connection script*/
    require_once('dbConnect.php');
    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s'n", mysqli_connect_error());
        exit();
    }
    $id = mysqli_real_escape_string($con, $_POST['id']);
    $twd = mysqli_real_escape_string($con, $_POST['twd']);
    $sql ="SELECT MAX(id) as MaxId FROM work_details WHERE twd = '$twd'";
    if ($result = mysqli_query($con, $sql)) {
        /* fetch associative array */
        if ($row = mysqli_fetch_row($result)) {
            if($row[0] === $id){
                $sql ="DELETE FROM work_details WHERE id='$id';";
                if ($result = mysqli_query($con, $sql)) {
                    echo 'success';
                    $json['success'] = true;
                    $json['message'] = 'delete is successful';
                }else{
                    $json['success'] = false;
                    $json['message'] = 'list cannot be deleted';
                }
            }else{
                $json['success'] = false;
                $json['message'] = '($row[0] !== $id)';         
            }
        } else{
            $json['success'] = false;
            $json['message'] = 'select is unsuccessful';            
        }
    /* close connection */
    mysqli_close($con);
    }
}
?>

在你的Java中解析它:

@Override
protected void onPostExecute(String s) {
    super.onPostExecute(s);
    Toast.makeText(getActivity(), s, Toast.LENGTH_LONG).show();
    try{
        JSONObject json = new JSONObject(s);
        if(json.getBoolean("success")){
            objadapter.removeItem(po)
        }else{
            Toast.makeText(getActivity(), 
            json.getString("message"), 
            Toast.LENGTH_LONG).show();
        }       
    }catch(JSONException ex){
    }
}