Keine setter/Feld zur Warnung der FB-Datenbank, Abrufen von Daten Auffüllen, Listview

Ich bin einfach nur versuchen, füllen die Daten aus der FB-Datenbank in meine listview. Die Protokolle zeigen die Daten abgerufen werden, aber der adapter wird nicht gesetzt, werden die Werte der text in ein einziges Listenelement in der Liste? Alle es sagt, ist "Keine setter/Feld für LEGEN WERT". Das macht mich denken, dass ich nicht meine setter richtig gemacht, aber es wurden automatisch generiert von Android Studio. Ich weiß nicht, was ich hier vermisst. Jede Hilfe ist willkommen.

NODE-OBJEKT

package com.megliosolutions.ipd.Objects;

import android.graphics.Bitmap;

/**
 * Created by Meglio on 6/13/16.
 */
public class NodeObject {


public String mStaticAddress;
public String mLat;
public String mLong;

public NodeObject(){
    //needed for firebase
}

public NodeObject(String address, String lat, String Long){
    this.mStaticAddress = address;
    this.mLat = lat;
    this.mLong = Long;
}

public String getmStaticAddress() {
    return mStaticAddress;
}

public void setmStaticAddress(String mStaticAddress) {
    this.mStaticAddress = mStaticAddress;
}

public String getmLat() {
    return mLat;
}

public void setmLat(String mLat) {
    this.mLat = mLat;
}

public String getmLong() {
    return mLong;
}

public void setmLong(String mLong) {
    this.mLong = mLong;
}
}

STATISCHE LISTADAPTER

/**
 * Created by Meglio on 6/14/16.
 */
public class StaticListAdapter extends ArrayAdapter<NodeObject> {
public static String TAG = StaticListAdapter.class.getSimpleName();
public Context mContext;
public List<NodeObject> mNodes;

public class ViewHolder {
    TextView mStaticAddress;
    TextView mLAT;
    TextView mLONG;

}

@Override
public int getCount() {
    return mNodes.size();
}

public StaticListAdapter(Context context, List<NodeObject> objects) {
    super(context, R.layout.activity_main, objects);
    this.mContext = context;
    this.mNodes = objects;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = new ViewHolder();
    NodeObject node = mNodes.get(position);
    if (convertView == null) {
        convertView = LayoutInflater.from(this.mContext).inflate(R.layout.node_item, null);
        holder.mLONG = (TextView) convertView.findViewById(R.id.node_item_LONG);
        holder.mStaticAddress = (TextView) convertView.findViewById(R.id.node_item_IP);
        holder.mLAT = (TextView) convertView.findViewById(R.id.node_item_LAT);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    holder.mStaticAddress.setText(node.getStaticAddress());
    holder.mLONG.setText(node.getLongitude());
    holder.mLAT.setText(node.getLatitude());

    return convertView;
}
}

MAINACTIVITY

public class MainActivity extends AppCompatActivity {

public static String TAG = MainActivity.class.getSimpleName();

public ListView main_ListView;
public FirebaseAuth mAuth;
public FirebaseUser mUser;
public DatabaseReference mDatabase;

//Strings
public String static_ip;
public String lat = "5.0";
public String mLong = "4.0";
public String currentUser;

//Adapters
public StaticListAdapter listAdapter;

//Node Object
NodeObject node;
public List<NodeObject> nodesList;




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

    //Instances
    mAuth = FirebaseAuth.getInstance();
    mUser = mAuth.getCurrentUser();
    mDatabase = FirebaseDatabase.getInstance().getReference();
    currentUser = mUser.getUid();

    main_ListView = (ListView)findViewById(R.id.Main_listview);

    //Toolbar
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    //[End of Toolbar]
    nodesList = new ArrayList<>();

    retrieveData();

    listAdapter = new StaticListAdapter(getApplicationContext(),nodesList);

    main_ListView.setAdapter(listAdapter);


    Log.i(TAG, "USER: " + currentUser);


}

private void retrieveData() {
    mDatabase.child("nodes").child(mUser.getUid())
            .addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                    Log.d(TAG, "onChildAdded:" + dataSnapshot.getKey());

                    NodeObject nodeObject = dataSnapshot.getValue(NodeObject.class);

                    listAdapter.add(nodeObject);
                    listAdapter.setNotifyOnChange(true);
                }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    //Handle item selection
    switch (item.getItemId()) {
        case R.id.getGPS:
           //nothing
            return true;
        case R.id.addNode:
            addNode();
            return true;
        case R.id.logout:
            signOut();
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}





private void signOut() {
    mAuth.signOut();
    Intent intent = new Intent(MainActivity.this, Login.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    Toast.makeText(getApplicationContext(), "Logging Out.", Toast.LENGTH_SHORT).show();
    startActivity(intent);

}

private void addNode() {
    //AlertDialog
    final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);

    dialogBuilder.setTitle("Dude, assign something...");

    LayoutInflater inflater = this.getLayoutInflater();

    View dialogView = inflater.inflate(R.layout.main_add_node_dialog, null);

    dialogBuilder.setView(dialogView);

    final EditText editText = (EditText)
            dialogView.findViewById(R.id.static_et);
    dialogBuilder.setPositiveButton("Assign", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            static_ip = editText.getText().toString();
            String ip = static_ip;
            node = new NodeObject(ip, lat, mLong);
            mDatabase.child("nodes").child(currentUser).push().setValue(node);
            Toast.makeText(getApplicationContext(), "Static IP: " + static_ip + " assigned!"
                    , Toast.LENGTH_SHORT).show();
        }
    }).
            setNegativeButton("Or Not...", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getApplicationContext(), "Fine, nvm then..."
                            , Toast.LENGTH_SHORT).show();
                }
            });

    dialogBuilder.create().show();
}




}

Debuggen zeigt, dass ich in der Lage bin, alles zu erreichen, was client-Seite. Logs zeigen dies auch.

06-18 18:25:42.981 12962-12962/com.megliosolutions.ipd D/MainActivity: zHF4TGnRvkeXEbKiLegiUNLGHX12:{ -KKLeBAe9pV1Umm3qQMo={mStaticAddress=26161910494949, mLong=3.0, mLat=2.0}, -KKG_ACFvdX7aJOR98-o={mStaticAddress=10.223.22.250, mLong=3.0, mLat=2.0}, -KKWKMZS7WkE_xWbL3rC={mStaticAddress=, mLong=4, mLat=5}, -KKQQLITf9-7iMFlqEWR={mStaticAddress=123123123123, mLong=3.0, mLat=2.0}, -KKG_J6PKwogjBFdk52Z={mStaticAddress=10.333.555.888, mLong=3.0, mLat=2.0}}

Keine setter/Feld zur Warnung der FB-Datenbank, Abrufen von Daten Auffüllen, Listview

UPDATE

Den Teil, der nicht für mich Sinn machen, aber ich bin mir sicher, dass macht Sinn für jene, die wissen es sehr gut. Ist das Verständnis, was bin ich beim Lesen der FB-Dokumentation. Ich Lesen Sie über es ein paar mal, aber ich denke, es war einfach nicht "Klick". Ich fand heraus, dass die Strukturierung der Daten in FB ist SCHLÜSSEL. Ohne, dass Sie können nicht code richtig, denn alles beruht auf diesem. FB macht es einfach zu bedienen, nun, ich sehe es. Ich werde einen blog-post zu erklären, meine Probleme und wie um Sie zu übertreffen, so dass niemand anderes läuft in diesen Schlamassel. Der folgende code erstellt eine funktionale listview mit FB backend!

public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                    Log.d(TAG, "onChildAdded:" + dataSnapshot.getKey());

                    NodeObject nodeObject = dataSnapshot.getValue(NodeObject.class);

                    listAdapter.add(nodeObject);
                    listAdapter.setNotifyOnChange(true);
                }
Haben Sie schaute auf die Lösungen von here?
ich konnte nicht sehen, listAdapter.setNotifyOnChange(true); wie gehen Sie Benachrichtigen, listadapter ohne diese.
Danke @UğurB deine Antwort hat mir geholfen!

InformationsquelleAutor wesley franks | 2016-06-18

Schreibe einen Kommentar