Добавление .xml Просмотр динамически - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу динамически добавлять представления, созданные в отдельном файле .xml (card.xml), в существующий LinearLayout (MainLinLay)..Xml содержит пока два TextViews.Добавление произойдет после завершения метода onCreate.Я только знаю, сколько просмотров я добавлю после получения первого сообщения MQTT.

Я часами искал решение / ответ, но не могу что-то найти.

При получении сообщения MQTT я создам объект класса:

@Override
            public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
                if(connected && !busy){
                    busy = true;
                    if (startup){
                        if (mqttMessage.toString().contains("\"Online\":true")){
                            Log.w("Debug", "Message Online");
                            busy = false;
                            return;
                        }
                        else{
                            startup = false;
                            Log.w("Debug","createCards");
                            creatCards(mqttMessage.toString());
                            busy = false;
                        }

                    }
                    else{
                        Log.w("Debug","update");
                        busy = false;
                        //update(mqttMessage.toString());
                    }
                }

            }

public void creatCards(String message){

    JSONObject jObject = null;
    try {
        jObject = new JSONObject(message);
    } catch (JSONException e) {
        e.printStackTrace();
        Log.w("JSON_err", e);
    }
    String nTemp="";
    try {
        JSONObject jobjValues = jObject.getJSONObject("Values");
        JSONObject jobjMeta = jObject.getJSONObject("MetaData");
        Iterator<String> names = jobjValues.keys();
        Log.w("Debug",message);
        int i=0;

        while(names.hasNext()){
            String name = names.next();
            Log.w("Debug",name);
            //Log.w("Context",this.getApplicationContext().toString());
            Card card = new Card(getApplication().getApplicationContext(), name);
            cards.add(card);


        }

    } catch (JSONException e) {
        e.printStackTrace();
        Log.w("JSON_err", e);
    }


}

Затем в классе:

package com.henne.xxyy.homeautomation;


import android.content.Context;
import android.support.v7.widget.CardView;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

public class Card  extends LinearLayout{

    View rootView;
    View View1;
    TextView name;
    TextView value;
    LinearLayout mainLinLay;


    public Card(Context context, String message) {
        super(context);
        init(context, message);
    }

    public Card(Context context, AttributeSet attrs, String message) {
        super(context, attrs);
        init(context, message);
    }

    private void init(Context context, String message) {
        try{

            rootView = inflate(context, R.layout.card, this);
            View1 = inflate(context, R.layout.activity_home, null);
            name = (TextView) rootView.findViewById(R.id.Name);
            value = (TextView) rootView.findViewById(R.id.Value);




            name.setText("Name1");
            value.setText("234");

            mainLinLay = (LinearLayout) View1.findViewById(R.id.mainLinLay);

            LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
            mainLinLay.setLayoutParams(params);

            mainLinLay.addView(rootView);

            rootView.invalidate();
            mainLinLay.invalidate();
            View1.invalidate();
        }
        catch (Exception e){
            Log.w("class_ex",e);
        }
    }

    private void update(String message) {

    }


}

Нет ошибки илиИсключениеДва добавленных TextViews просто не отображаются.

Чего мне не хватает?Я надеюсь, что поделился достаточным количеством информации.

Спасибо !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...