如果没有来自服务器的数据,则为Toast消息

时间:2017-05-23 19:29:16

标签: java android

我想在我的搜索中显示它是否不会收到类似的结果我输入它应该敬酒我“没有结果。但问题是它在0.5秒后获取数据。所以当我点击按钮时它首先它没有结果然后获取数据并在recyclerview中显示它们。我想如果没有相似的单词那就干杯我最后没有结果;

 String text = txtsearch.getText().toString();
             new AsyncTaskSearch("http://192.168.1.100/afgApp/search.php", text).execute();
                  final Timer timer = new Timer();
                    timer.scheduleAtFixedRate(new TimerTask() {
                        @Override
                        public void run() {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                  if (!Activity_Search.data.equals("")) {
                                      Toast.makeText(Activity_Search.this, data, Toast.LENGTH_SHORT).show();
                                        timer.cancel();
                                    }else {
                                      Toast.makeText(Activity_Search.this, "No results", Toast.LENGTH_SHORT).show();
                                  }
                                }
                            });
                        }
                    },1,500);
                    Activity_Search.data = "";
                }

// Asynctask.java

    public class AsyncTaskSearch extends AsyncTask{
    public String link="";
    public String text="";


    public AsyncTaskSearch(String link,String text){

        this.link=link;
        this.text=text;

    }
    @Override
    protected Object doInBackground(Object[] params) {
        try{
            String data= URLEncoder.encode("text","UTF8")+"="+URLEncoder.encode(text,"UTF8");

            URL url=new URL(link);
            URLConnection connection=url.openConnection();

            connection.setDoOutput(true);
            OutputStreamWriter writer=new OutputStreamWriter(connection.getOutputStream());
            writer.write(data);
            writer.flush();
            BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream()));
            StringBuilder builder=new StringBuilder();

            String line=null;

            while((line=reader.readLine())!=null){
                builder.append(line);

            }

            Activity_Search.data=builder.toString();


        }catch (Exception e){

        }
        return "";
    }
}

1 个答案:

答案 0 :(得分:0)

我不知道你是如何使用你的AysncTask的。试试这个代码吧,它对我来说很好:

private class AsyncGetClass extends AsyncTask<Object, Void, String> {
    ProgressDialog progressDialog;
    String TAG, url;
    AsyncHttpResponseHandler asyncHttpResponseHandler;
    Context context;

    public AsyncGetClass(Context context) {
        // TODO Auto-generated constructor stub
        this.context = context;

    }

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
        if (!isProgressHiding)
            if (progressDialog == null) {
                progressDialog = createProgressDialog(context);
                progressDialog.show();
            } else {
                progressDialog.show();
            }
    }

    @SuppressWarnings("unchecked")
    @Override
    protected String doInBackground(Object... params) {
        // TODO Auto-generated method stub
        TAG = (String) params[0];
        url = (String) params[1];
        asyncHttpResponseHandler = (AsyncHttpResponseHandler) params[3];

        InputStream is = null;
        String result = "";

        // HTTP post
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            Log.e(TAG, url);
            HttpResponse response = httpclient.execute(httpGet);

            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        } catch (Exception e) {
            Log.e(TAG, "Error in http connection " + e.toString());
            Toast.makeText(Activity_Search.this, "No results", Toast.LENGTH_SHORT).show();
        }

        // Convert response to string
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();
            // Log.i(TAG + ".result", result);
            return result;
        } catch (Exception e) {
            Log.e(TAG, "Error converting result " + e.toString());
            return null;
        }
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        if (!isProgressHiding)
            if (progressDialog != null)
                progressDialog.dismiss();
        if (result != null)
            try {
                Log.i(TAG, result);
                asyncHttpResponseHandler.onSuccess(result);
            } catch (Exception e) {
                Log.e(TAG, "Must implement the interface " + e.toString());
            }
    }

}