如何更新/刷新TextView以每秒显示更新的Json数据?

时间:2019-01-07 11:37:55

标签: java php android json

我想创建一个在线队列监视应用程序,它将显示输入到数据库中的新数据。UI示例如下

UI

如果要输入新数据(Json),我希望当前服务票证每秒更新一次。

MainActivity.java

public class MainActivity extends AppCompatActivity {

public static TextView data;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button input_number = (Button) findViewById(R.id.button2);
    Button reminder = (Button) findViewById(R.id.button);

    final TextView userinputtext = (TextView) findViewById(R.id.textView6);

    data = (TextView)findViewById(R.id.textView10);

这是我创建的 data.java

public class data extends AsyncTask<Void,Void,Void> {

String data=" ";
String singleParsed = " ";

@Override
protected Void doInBackground(Void... voids) {
    try {

        URL url = new URL("url/SamplePage.php");
        HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();
        InputStream inputStream = httpURLConnection.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String line ="";
        while(line!=null){
            line = bufferedReader.readLine();
            data = data + line;
        }

        JSONArray JA = new JSONArray(data);
        for (int i =0; i<JA.length();i++){
            JSONObject JO = (JSONObject) JA.get(i);

            singleParsed = JO.get("ticket_number")+"";

            //dataParsed = dataParsed + singleParsed;

        }

    }catch (MalformedURLException e){
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }catch (JSONException e){
        e.printStackTrace();
    }
    return null;

}

@Override
protected void onPostExecute(Void aVoid) {
    super.onPostExecute(aVoid);

    MainActivity.data.setText(this.singleParsed);

}

}

如果有任何意见或帮助,我将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

最快的答案是每秒设置一个计时器,以查询数据库中的数据并更新视图。 如果您正在寻找更优化,完整,文档化和更轻松的解决方案,建议您使用Firebase,它提供诸如实时数据库之类的服务:https://youtu.be/U5aeM5dvUpA 当然,还有其他选择,例如RethinkDB。 您还应该查找websocket,因为它们类似于解决此类实时更新问题的方法。 但是在我看来,firebase是完美的选择。

答案 1 :(得分:0)

您可以使用SyncAdapterLiveData。如果您使用Room,它将更容易处理。