2016-08-10 3 views
0

Я извлекаю данные из firebase, чтобы заполнить свой собственный список. Мои данные удаляются в событии onChildAdded, но не добавляются в мой пользовательский список. Мой пользовательский список пустПользовательский список, не отправляющий

Вот моя основная деятельность, где я установил список адаптер

package com.example.manas.worknhire; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.widget.ListView; 

import com.google.firebase.database.ChildEventListener; 
import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 

import java.util.ArrayList; 

public class work_available_list extends AppCompatActivity implements   ChildEventListener { 
    ListView work_list; 
    newJob temp=new newJob(); 
    ArrayList<newJob> job1=new ArrayList<newJob>(); 
    FirebaseDatabase db=FirebaseDatabase.getInstance(); 
    DatabaseReference myref=db.getReference(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_work_available_list); 
     work_list=(ListView)findViewById(R.id.work_list_items); 
     myref=myref.child("jobsPosted"); 
     myref.addChildEventListener(this); 
     CustomList list1=new CustomList(this,job1); 
     work_list.setAdapter(list1); 



    } 

    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     temp=dataSnapshot.getValue(newJob.class); 
     job1.add(temp); 



    } 

    @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) { 

    } 
} 

И вот мой код Настраиваемый список

package com.example.manas.worknhire; 

import android.app.Activity; 
import android.content.Context; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.TextView; 

import java.util.ArrayList; 

/** 
* Created by Manas on 7/12/2016. 
*/ 
public class CustomList extends ArrayAdapter<String>{ 
    private final ArrayList<newJob> job1; 
    private final Activity context; 

    public CustomList(Activity context, ArrayList<newJob> job1) { 
     super(context,R.layout.list_row); 
     this.job1=job1; 
     this.context = context; 
    } 



    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater=context.getLayoutInflater(); 
     View rowView=inflater.inflate(R.layout.list_row, null, true); 
     TextView title=(TextView)rowView.findViewById(R.id.title_job); 
     TextView description=(TextView)rowView.findViewById(R.id.description_job); 
     TextView postedBy=(TextView)rowView.findViewById(R.id.postedBy_job); 
     Button contact=(Button)rowView.findViewById(R.id.contact_job); 
     Log.w("title",job1.get(position).getJob_title()); 
     title.setText(job1.get(position).getJob_title()); 
     description.setText(job1.get(position).getJob_description()); 
     postedBy.setText(job1.get(position).getName()); 

     return rowView; 
    } 
} 

Вот снимок listrow

enter image description here

ответ

0

Ваш список не пуст, адаптер просто не знает, что вы что-то добавили к нему.

@Override 
public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
    temp=dataSnapshot.getValue(newJob.class); 
    job1.add(temp); 
    // Need to update the ListView Adapter 
} 

Либо вам нужно вызвать notifyDataSetChanged() на адаптере, или вместо него вы должны использовать adapter.add() вместо job1.add()

Примечание: Я говорю адаптер, но ваш класс называется CustomList. Возможно, вы захотите придерживаться соглашений об именах и назовите это что-то более описательное и положите Adapter в конце. Аналогично с work_available_list Java-классы - CamelCased, а не lowercase_words, и это должно быть что-то-Activity.

+0

Я сделал изменения, которые вы сказали. К сожалению, это не сработало. Мои данные не перемещаются в getView. –

+0

Он должен показать. В противном случае ваша база данных может быть пуста. Вы пытались добавить некоторые инструкции печати в Logcat, чтобы определить, какие строки кода выполняются? –

+0

мои данные извлекаются в списке, но он не собирается customListAdaptor –