java - 点击listview时如何将多个值传递给firebase
问题描述
我想在单击列表视图中的项目时将数据存储在 Firebase 中。我的列表视图活动如下。任何人都可以请帮忙。我是安卓工作室的新手
package android.example.mentoring_app;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
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 org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
public class secondSem extends AppCompatActivity {
ListView Lview;
ArrayList<String> Alist=new ArrayList<>();
DatabaseReference mRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second_sem);
ArrayAdapter<String> ad=new ArrayAdapter<>(secondSem.this, android.R.layout.simple_list_item_1,Alist);
Lview=findViewById(R.id.scndl);
Lview.setAdapter(ad);
mRef= FirebaseDatabase.getInstance().getReference("students").child("2nd sem");
mRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull @NotNull DataSnapshot snapshot, @Nullable @org.jetbrains.annotations.Nullable String previousChildName) {
String value=snapshot.getValue(String.class);
Alist.add(value);
ad.notifyDataSetChanged();
}
@Override
public void onChildChanged(@NonNull @NotNull DataSnapshot snapshot, @Nullable @org.jetbrains.annotations.Nullable String previousChildName) {
ad.notifyDataSetChanged();
}
@Override
public void onChildRemoved(@NonNull @NotNull DataSnapshot snapshot) {
}
@Override
public void onChildMoved(@NonNull @NotNull DataSnapshot snapshot, @Nullable @org.jetbrains.annotations.Nullable String previousChildName) {
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
}
});
}
}
或者有没有其他方法可以选择动态打印的项目并存储在firebase数据库中。就像使用复选框或其他东西......任何形式的帮助表示赞赏:)
解决方案
尝试这个
Lview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// on listView item clicked
myRef.setValue(ad.getItem(position));
}
});
推荐阅读
- c# - C# Unity Container Constructor Injection 瞬态生命周期管理器提供相同的实例
- c# - 如何在最后一个元素之前使用分隔符定义 WPF ContextMenu,使用 ItemsSource 上的绑定而不是单个 MenuItems
- angular - Ionic Angular HTTP isTrusted:true 问题
- sharepoint - SharePoint 2013:项目删除向用户发送邮件 - 不想要
- django - 如何使用wordpress + django搭建网站
- javascript - Google Firebase Analytics 实施
- typescript - 使用混合时,将参数约束为文字值的某个有限联合
- angular - 在 aws s3 上部署时重新加载 Angular 项目时出现 404 错误
- javascript - 音频元素不会播放音频
- wordpress - 将 Drift 和 Hubspot(第三方 JS)添加到 AMP 页面