【问题标题】:Retrieving data to listview将数据检索到列表视图
【发布时间】:2017-01-17 05:04:15
【问题描述】:

我一直试图让 Firebase 数据出现在 ListView 中,但我做不到。列表返回,但方式错误

有人可以帮帮我吗?

非常感谢!

这是 Ideia 类:

public class Ideia {
    private String distrito, clube, nomeCompleto, nomeIdeia, descricaoIdeia;

public Ideia(){}

public String getDistrito() {
    return distrito;
}

public void setDistrito(String distrito) {
    this.distrito = distrito;
}

public String getClube() {
    return clube;
}

public void setClube(String clube) {
    this.clube = clube;
}

public String getNomeCompleto() {
    return nomeCompleto;
}

public void setNomeCompleto(String nomeCompleto) {
    this.nomeCompleto = nomeCompleto;
}

public String getNomeIdeia() {
    return nomeIdeia;
}

public void setNomeIdeia(String nomeIdeia) {
    this.nomeIdeia = nomeIdeia;
}

public String getDescricaoIdeia() {
    return descricaoIdeia;
}

public void setDescricaoIdeia(String descricaoIdeia) {
    this.descricaoIdeia = descricaoIdeia;
}

}

这里是 MyIdeaActivity:

public class MyIdeaActivity extends AppCompatActivity {

private static final String TAG = "PostDetailActivity";
private ListView mListView;
private Button mBtnMenu;
private FirebaseDatabase firebaseDatabase;
private DatabaseReference mDatabaseRef;
private List<Ideia> mList;
private ArrayAdapter mListAdapter;

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

    firebaseDatabase = FirebaseDatabase.getInstance();
    mDatabaseRef = firebaseDatabase.getReference();

    mListView = (ListView) findViewById(R.id.lv_my_idea_myidea);
    mBtnMenu = (Button) findViewById(R.id.btn_menu_myidea);

    mList = new ArrayList<>();
    mListAdapter = new ArrayAdapter<Ideia>(this, android.R.layout.simple_dropdown_item_1line, mList);
    mListView.setAdapter(mListAdapter);

    mDatabaseRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot data : dataSnapshot.getChildren()) {
                Ideia i = data.getValue(Ideia.class);
                mList.add(i);
                mListAdapter.notifyDataSetChanged();
            }

        }


        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

   }
 }

【问题讨论】:

  • 预期的行为是什么?
  • 您将 Ideia 对象存储到列表中。这就是为什么结果看起来很奇怪。您想在列表中显示哪些内容?如果是这样,请创建一个自定义适配器并显示来自 Ideia 对象的项目。

标签: android listview firebase firebase-realtime-database


【解决方案1】:

只需覆盖Ideia 类中的toString() 方法

public class Ideia {
    private String distrito, clube, nomeCompleto, nomeIdeia, descricaoIdeia;

public Ideia(){}

public String getDistrito() {
    return distrito;
}

public void setDistrito(String distrito) {
    this.distrito = distrito;
}

public String getClube() {
    return clube;
}

public void setClube(String clube) {
    this.clube = clube;
}

public String getNomeCompleto() {
    return nomeCompleto;
}

public void setNomeCompleto(String nomeCompleto) {
    this.nomeCompleto = nomeCompleto;
}

public String getNomeIdeia() {
    return nomeIdeia;
}

public void setNomeIdeia(String nomeIdeia) {
    this.nomeIdeia = nomeIdeia;
}

public String getDescricaoIdeia() {
    return descricaoIdeia;
}

public void setDescricaoIdeia(String descricaoIdeia) {
    this.descricaoIdeia = descricaoIdeia;
}
@Override
public String toString() {
    return distrito; // set field here which you want to display in list
}
}

【讨论】:

    【解决方案2】:

    当您使用 firebase 时,使用 firebase UI 是一种很好的做法,所以在您的情况下,如果您必须显示列表,那么您可以使用 firebase ListAdapter 或 firebase Recyclerview 适配器。它专为 Firebase 设计,管理效率很高。

    按照此代码获取 Firebase Recyclerview 适配器,它可以帮助您 Firebase with ListView and Recyclerview

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 2021-09-13
      • 2013-08-07
      • 1970-01-01
      • 2015-10-01
      • 2017-11-18
      • 1970-01-01
      相关资源
      最近更新 更多