当json字符串不为true时显示对话框

时间:2016-08-05 07:10:13

标签: android json alertdialog android-alertdialog

public class Recyclerview extends AppCompatActivity {
private RecyclerView mRecyclerView;
CustomAdapter cu;


ArrayList<Employee> arr, arr1;
Toolbar toolbar;

TextView t1, t2;
long l = 0;
private ProgressDialog progress;
int j;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.recyclerview);

    toolbar = (Toolbar) findViewById(R.id.toolbar1);
    setSupportActionBar(toolbar);

    final RecyclerView rv = (RecyclerView) findViewById(R.id.rv);
    rv.setHasFixedSize(true);

    arr = new ArrayList<Employee>();
    arr = InitializeData();

    final LinearLayoutManager llm = new LinearLayoutManager(Recyclerview.this);
    rv.setLayoutManager(llm);
    rv.setHasFixedSize(true);


    cu = new CustomAdapter(Recyclerview.this, arr);

    final bank ban = new bank(Recyclerview.this);
    rv.setAdapter(cu);

    registerForContextMenu(rv);


    ImageButton refresh = (ImageButton) findViewById(R.id.refresh);

    refresh.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            progress = ProgressDialog.show(Recyclerview.this, "dialog title",
                    "dialog message", true);
            Toast.makeText(Recyclerview.this, "ok", Toast.LENGTH_LONG).show();


            if (isNetworkAvailable()) {

                String url = ConstantValues.BASE_URL;
                RequestBody formBody = new FormBody.Builder()
                        .add("key1", "value1")
                        .add("key2", "value2")
                        .add("key3", "value3")
                        .build();

                try {
                    post(url, formBody, new Callback() {
                        @Override
                        public void onFailure(Call call, IOException e) {
                            Log.e("JSONDemo", "IOException", e);
                        }

                        @Override
                        public void onResponse(final Call call, final Response response) throws IOException {
                            String JSON = response.body().string();
                            Log.e("res", " " + JSON);
                            try {

                                    JSONObject jsonObj = new JSONObject(JSON);



                                JSONArray resultarr = jsonObj.getJSONArray("result");
                                final JSONArray resultarr1 = jsonObj.getJSONArray("result1");


                                if (resultarr1.length() == 0 ) {
                                    AlertDialog.Builder builder1 = new AlertDialog.Builder(Recyclerview.this);
                                    builder1.setMessage("No data found");
                                    builder1.setCancelable(true);
                                    builder1.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialogInterface, int i) {
                                            dialogInterface.cancel();
                                        }
                                    });

                                } else {

                                    ban.OpenDB();
                                /*Delete old Data from Table*/
                                    ban.Delete("");
                                    for (int i = 0; i < resultarr1.length(); i++) {


                                        Employee emp = new Employee();
                                        JSONObject result1obj = resultarr1.getJSONObject(i);
                                        String result1Id = result1obj.getString(ConstantValues.Bank_ID);
                                        String result1NAME = result1obj.getString(ConstantValues.Bank_NAME);
                                        Log.e("result", " " + result1Id);
                                        Log.e("result", " " + result1NAME);
                                        emp.setId(result1obj.getString(ConstantValues.Bank_ID));
                                        emp.setName(result1obj.getString(ConstantValues.Bank_NAME));
                                        arr.add(emp);

                                        l = ban.InsertQryForTabEmpData(result1Id, result1NAME);
                                    }
                                    ban.CloseDB();

                                }



                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        // you can access all the UI componenet

                                        if (progress.isShowing())
                                            progress.dismiss();
                                        cu.notifyDataSetChanged();

                                    }
                                });
                            } catch (Exception e) {

                                Log.e("JSONDemo", "onResponse", e);
                                AlertDialog.Builder builder1 = new AlertDialog.Builder(Recyclerview.this);
                                builder1.setMessage("No data found");
                                builder1.setCancelable(true);
                                builder1.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialogInterface, int i) {
                                        dialogInterface.cancel();
                                    }
                                });


                            }

                        }
                    });

                } catch (Exception e) {
                    Log.e("JSONDemo", "Post Exception", e);
                }

            } else {
                Toast.makeText(Recyclerview.this, "Internet not available", Toast.LENGTH_LONG).show();
            }


        }
    });


}

private ArrayList<Employee> InitializeData() {
    ArrayList<Employee> arr_emp = new ArrayList<Employee>();
    bank ban = new bank(Recyclerview.this);
    long l = 0;
    ban.OpenDB();
    arr_emp = ban.AllSelectQryForTabEmpData();
    ban.CloseDB();
    return arr_emp;
}


private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager
            = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}


private final OkHttpClient client = new OkHttpClient();

Call post(String url, RequestBody formBody, Callback callback) throws IOException {

    Request request = new Request.Builder()
            .url(url)
            .post(formBody)
            .build();

    Call call = client.newCall(request);
    call.enqueue(callback);
    return call;
}


}

通过调用错误的Api,它应该给对话框说不可用的数据,是否可以在catch中写入对话框但是它没有显示对话框确实帮助我摆脱它我不知道在哪里使用如果和其他...错误即将开始String JSON = response.body().string();提前谢谢

2 个答案:

答案 0 :(得分:0)

创建一个名为showAlertDialog

的方法
public void showAlertDialog(String title, String message) {
    final AlertDialog.Builder builder1 = new AlertDialog.Builder(Recyclerview.this);
    builder1.setTitle(title);
    builder1.setMessage(message);
    builder1.setCancelable(true);
    builder1.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            dialogInterface.cancel();
        }
    });

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            builder1.show();     
        }
    });
}

从catch块调用此方法。

答案 1 :(得分:0)

我在代码中注意到的一件事是

1) You are not creating dialog

2) You are not showing your dialog

关于代码,您需要在代码中执行额外操作:

 AlertDialog alertDialog = builder1.create();
 alertDialog.show();

您可以创建单独的方法,您可以在try和catch块中调用它:

public void showErrorAlert()
{
    builder1 = new AlertDialog.Builder(Recyclerview.this);
    builder1.setMessage("No data found");
    builder1.setCancelable(true);
    builder1.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            dialogInterface.cancel();
        }
    });

    AlertDialog alertDialog = builder1.create();
    alertDialog.show();
}

希望这能以某种方式帮助你。