【问题标题】:Custom List not dispaying自定义列表不显示
【发布时间】:2016-08-10 17:36:32
【问题描述】:

我正在从 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;
    }
}

这是列表行的快照

【问题讨论】:

    标签: android listview firebase custom-lists


    【解决方案1】:

    您的列表不为空,适配器只是不知道您向其中添加了任何内容。

    @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

    【讨论】:

    • 我按照你说的做了。不幸的是,它没有用。我的数据没有移动到 getView。
    • 应该会显示。否则你的数据库可能是空的。您是否尝试过在 Logcat 中添加一些打印语句来确定执行了哪些代码行?
    • 我的数据在列表中被检索到,但它不会进入 customListAdaptor
    猜你喜欢
    • 1970-01-01
    • 2022-11-24
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多