亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android:動態顯示數據到我的微調器

Android:動態顯示數據到我的微調器

紅糖糍粑 2023-09-20 16:28:09
我目前陷入了如何動態地向微調器顯示數據的困境。我正在使用 websocket 接收數據并在我的 UI 線程上運行它,我的問題是我的微調器中沒有顯示數據列表。
查看完整描述

1 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

您應該創建一個ArrayList如下所示的。


ArrayList<String> spinnerArray = new ArrayList<String>();

Spinner 與 Spinner 相關聯Adapter view,因此要在 Spinner 中填充數據,您需要使用adapter. Anadapter是UI組件和數據源之間的橋梁,幫助我們向UI組件填充數據。


只需您可以像下面一樣使用ArrayAdapter(要使用自定義適配器,請參閱此)


ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>

        (this, android.R.layout.simple_spinner_item,

       spinnerArray);

之后,您必須將您的設置設置adapter為spinner如下所示。


spin.setAdapter(spinnerArrayAdapter); 

示例:您的代碼應如下所示。


ArrayList<String> spinnerArray;

ArrayAdapter<String> spinnerArrayAdapter

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.popup);


    WayPointData = new SubscribedData<>();

    final Type WayPointType = new TypeToken<SubscribedData<WayPoint>>() {

    }.getType();



    // spinner element

    spin = (Spinner) findViewById(R.id.spinner);

    spinnerArray = new ArrayList<String>();

    spinnerArrayAdapter = new ArrayAdapter<String>

            (this, android.R.layout.simple_spinner_item,

           spinnerArray);

    spin.setAdapter(spinnerArrayAdapter);


    rosbridge = new RosbridgeListener("ws://10.24.204.231:9090");

    rosbridge.setOnDataReceivedListener(new RosbridgeMessageListener() {


        /**

         * a running thread that when the connection is made the data of the topic will serialize and deserialized java objects

         * to (and from) JSON.

         * @param msg

         */

        @Override

        public void onDataReceived(final String msg) {

            try {

                runOnUiThread(  new Runnable() {

                    @Override

                    public void run() {

                        try {

                            WayPointData = new Gson().fromJson(msg,WayPointType);

                            // modify below lines like

                            JSONObject mainObject = new JSONObject(msg); // add msg in JSONObject parameter

                            JSONObject msgObject = mainObject.getJSONObject("msg"); // get msgObject from main object

                            JSONArray wayPointJsonArray = msgObject.getJSONArray("waypoints"); // get wayPointJsonAarry from msg object

                            for (int i = 0; i < wayPointJsonArray.length(); i++) {

                                JSONObject wayPointJsonObject = wayPointJsonArray.getJSONObject(i);

                                // Parse name

                                String name = wayPointJsonObject.getString("name");

                                WayPoint wayPoint = new WayPoint();

                                wayPoint.name = name;

                                

                               // here you have to add name to your spinner array

                               spinnerArray.add(name)

                            }

                           // After all your data added to arraylist you should notify adapter that data set changed

                           spinnerArrayAdapter.notifyDataSetChanged();

                        } catch (Exception e) {

                            e.printStackTrace();

                        }


                    }

                });


                /** a msg that will display once the data is received **/

                Log.d("B9T", String.format("Received data: %s", msg));

            } catch (Exception e) {

                e.printStackTrace();

            }


        }

    });



    spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {


        @Override

        public void onItemSelected(AdapterView<?> parent, View view, int p, long id) {

            WayPoint wayPoint = (WayPoint) parent.getItemAtPosition(p);

        }


        @Override

        public void onNothingSelected(AdapterView<?> parent) {

        }

    });


    /** a set of the waypoints popup window **/

    DisplayMetrics dm = new DisplayMetrics();

    getWindowManager().getDefaultDisplay().getMetrics(dm);


    int width = dm.widthPixels;

    int height = dm.heightPixels;


    getWindow().setLayout((int) (width * .6), (int) (height * .6));



  }

}



查看完整回答
反對 回復 2023-09-20
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號