2016-08-10 24 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 –