我是Android和Firebase的新手。我想在arraylist中显示来自Firebase的数据。这是我遇到的logcat错误,
原因:java.lang.NullPointerException:尝试在com.example.w上的空对象引用上调用虚拟方法'java.lang.String com.example.najihah.budgetapps.Model.Users.getPhone()' .apps.ListItemActivity.onCreate(ListItemActivity.java:70)
TaskActivity.java
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ValidateData();
Intent intent = new Intent(TaskActivity.this, ListItemActivity.class);
startActivity(intent);
}
});
}
private void ValidateData() {
item = titleItem.getText().toString();
desc = titledesc.getText().toString();
strPriority = radioButton.getText().toString();
if (TextUtils.isEmpty(item))
{
Toast.makeText(this, "Product insert item list", Toast.LENGTH_SHORT).show();
}
else if (TextUtils.isEmpty(desc))
{
Toast.makeText(this, "Please insert description", Toast.LENGTH_SHORT).show();
}
else if (TextUtils.isEmpty(strPriority))
{
Toast.makeText(this, "Please choose the item priority", Toast.LENGTH_SHORT).show();
}
else
{
StoreDatabase();
}
}
private void StoreDatabase() {
HashMap<String, Object> listMap = new HashMap<>();
listMap.put("item", item);
listMap.put("desc", desc);
listMap.put("priority", strPriority);
final Task<Void> voidTask = reference.child(RandomKey).updateChildren(listMap)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(TaskActivity.this, "Item is in the list", Toast.LENGTH_SHORT).show();
} else {
String message = task.getException().toString();
Toast.makeText(TaskActivity.this, "Error: " + message, Toast.LENGTH_SHORT).show();
}
}
});
下面是与TaskActivity相关的活动。
ListItemActivity.java
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren())
{
MyList p = dataSnapshot1.getValue(MyList.class);
list.add(p);
}
listAdapter = new ListAdapter(ListItemActivity.this, list);
ourlist.setAdapter(listAdapter);
listAdapter.notifyDataSetChanged();
}
注意:MyList.java是用于setter和getter的模型类
ListAdapter.java
Context context;
ArrayList<MyList> myList;
public ListAdapter(Context c, ArrayList<MyList> p){
context = c;
myList = p;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.itemlist, viewGroup, false));
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
myViewHolder.title.setText(myList.get(i).getTitle());
myViewHolder.desc.setText(myList.get(i).getDesc());
myViewHolder.priority.setText(myList.get(i).getPriority());
//myViewHolder.key.setText(myList.get(i).getKey());
final String getTitle = myList.get(i).getTitle();
final String getDesc = myList.get(i).getDesc();
final String getPriority = myList.get(i).getPriority();
// final String getKey = myList.get(i).getKey();
myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*Intent intent = new Intent(context, EditTask.class);*/
Intent intent = new Intent(context, EditTask.class);
intent.putExtra("title", getTitle);
intent.putExtra("desc", getDesc);
intent.putExtra("priority", getPriority);
//intent.putExtra("key", getKey);
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return myList.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView title, desc, priority, key;
public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.titlelists);
desc = (TextView) itemView.findViewById(R.id.desclists);
priority = (TextView) itemView.findViewById(R.id.priority);
}
}
我希望项目,优先级和描述显示在ItemListActivity.java的数组列表中