gpt4 book ai didi

java - 无法使用 FirebaseListAdapter 将数据获取到 Listview

转载 作者:行者123 更新时间:2023-12-01 19:56:18 25 4
gpt4 key购买 nike

我无法让 FirebaseListAdapter 工作,我的 ListView 在 fragment 中始终为空。可能是什么问题?

这是我的数据库: Database

我的 PirmadienisFragment .xml 文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="lt.ivinskis.kligapp3.tvarkarastis.dienos.PirmadienisFragment">

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list" />
</FrameLayout>

我的 PirmadienisFragment .class 代码:

public class PirmadienisFragment extends ListFragment {
private FirebaseAuth auth;
private FirebaseUser user;

public PirmadienisFragment() {}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

// DATABASE
auth = FirebaseAuth.getInstance();
user = auth.getCurrentUser();

View view = inflater.inflate(R.layout.fragment_pirmadienis, container, false);
ListView mListView = (ListView) view.findViewById(android.R.id.list);

Query query = FirebaseDatabase.getInstance().getReference().child("timetable").child(user.getUid()).child("Pirmadienis");
FirebaseListOptions<TvarkarastisInformation> options = new FirebaseListOptions.Builder<TvarkarastisInformation>()
.setQuery(query, TvarkarastisInformation.class)
.setLayout(android.R.layout.simple_list_item_1)
.build();

FirebaseListAdapter mAdapter = new FirebaseListAdapter<TvarkarastisInformation>(options) {
@Override
protected void populateView(View view, TvarkarastisInformation model, int position) {
TextView pamoka = view.findViewById(android.R.id.text1);
pamoka.setText(model.getPamoka());
}
};
mListView.setAdapter(mAdapter);

return inflater.inflate(R.layout.fragment_pirmadienis, container,
false);
}
}

我的 TvarkarastisInformation .class 文件

public class TvarkarastisInformation {
public String kelinta_pamoka;
public String kelintadienis;
public String pamoka;

public TvarkarastisInformation() {}

public TvarkarastisInformation(String kelinta_pamoka, String kelintadienis, String pamoka) {
this.kelinta_pamoka = kelinta_pamoka;
this.kelintadienis = kelintadienis;
this.pamoka = pamoka;
}

public String getKelinta_pamoka() {
return kelinta_pamoka;
}

public String getKelintadienis() {
return kelintadienis;
}

public String getPamoka() {
return pamoka;
}

public void setKelinta_pamoka(String kelinta_pamoka) {
this.kelinta_pamoka = kelinta_pamoka;
}

public void setKelintadienis(String kelintadienis) {
this.kelintadienis = kelintadienis;
}

public void setPamoka(String pamoka) {
this.pamoka = pamoka;
}
}

将我的数据添加到数据库:

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

databaseReference = FirebaseDatabase.getInstance().getReference();
auth = FirebaseAuth.getInstance();
user = auth.getCurrentUser();

et_pam_nr = (EditText) findViewById(R.id.kelinta_pamoka);
et_pam_pav = (EditText) findViewById(R.id.pamokos_pavadinimas);
et_pam_kelintad = (EditText) findViewById(R.id.kelintadienis);
}

private void writeNewTimetable(String kelinta_pamoka, String kelintadienis, String pamoka) {

TvarkarastisInformation tvarkarastisInformation = new TvarkarastisInformation(kelinta_pamoka, kelintadienis, pamoka);
databaseReference.child("timetable").child(user.getUid()).child(kelintadienis).child(kelinta_pamoka).setValue(pamoka);
}

private void addLesson() {
TvarkarastisInformation tvarkarastisInformation = new TvarkarastisInformation();

String pamoka = et_pam_pav.getText().toString();
String kelintadienis = et_pam_kelintad.getText().toString();
String kelinta_pamoka = et_pam_nr.getText().toString();

tvarkarastisInformation.setPamoka(pamoka);
tvarkarastisInformation.setKelintadienis(kelintadienis);
tvarkarastisInformation.setKelinta_pamoka(kelinta_pamoka);

writeNewTimetable(kelinta_pamoka, kelintadienis, pamoka);
}

感谢您的帮助。

最佳答案

为了解决这个问题,首先将以下文件设为私有(private):

private String kelinta_pamoka;
private String kelintadienis;
private String pamoka;

您读取数据的方式是正确的,但添加数据的方式不正确,为此我建议您替换 addLesson() 方法和 writeNewTimetable()方法:

private void addLesson() {
String pamoka = et_pam_pav.getText().toString();
String kelintadienis = et_pam_kelintad.getText().toString();
String kelinta_pamoka = et_pam_nr.getText().toString();
TvarkarastisInformation tvarkarastisInformation = new TvarkarastisInformation(pamoka, kelintadienis, kelinta_pamoka);

DatabaseReference pirmadienisRef = databaseReference.child("timetable").child(user.getUid()).child("Pirmadienis");
String key = pirmadienisRef.push().getKey();
pirmadienisRef.child(key).setValue(tvarkarastisInformation);
}

您已经创建了该对象,无需创建两次。删除旧数据,添加新数据并重试。

关于java - 无法使用 FirebaseListAdapter 将数据获取到 Listview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49636138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com