gpt4 book ai didi

java - 使用 getValue 调用 Firebase 时,在类 org.json.JSONObject 上找不到要序列化的属性

转载 作者:行者123 更新时间:2023-12-05 07:41:22 26 4
gpt4 key购买 nike

我有一个带有 GridView 的简单主 Activity ,每个项目都有一个 TextView,我想用存储在 Firebase 数据库中的每个项目的内容之一填充它。当我调用 getValue() 时问题出现了。应用程序崩溃,我收到以下错误:

com.google.firebase.database.DatabaseException: No properties to serialize found on class org.json.JSONObject

我正在使用我制作的自定义适配器来将数据解析到 GridView。我的代码如下:

public class MainActivity extends AppCompatActivity {

public JSONArray tables = new JSONArray();

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

GridView grid = (GridView) findViewById(R.id.table_grid);

FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = firebaseDatabase.getReference("development/store_1/tables");
databaseReference.child("items").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterable<DataSnapshot> children = dataSnapshot.getChildren();

for (DataSnapshot child : children) {
JSONObject table = child.getValue(JSONObject.class);
tables.put(table);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {
String error = databaseError.getMessage().toString();
Toast.makeText(MainActivity.this, error, Toast.LENGTH_SHORT).show();
}
});

TableAdapter tableAdapter = new TableAdapter(this, tables, 0);
grid.setAdapter(tableAdapter);
}
}

最佳答案

我已经很久没有解决这个问题了,但我想这个答案也可以帮助其他人。我没有使用 valueEventListener,而是使用了 tableGridAdapter 和相邻的 onItemClickListener。解决我的问题的代码如下(我省略了与问题无关的部分代码):

public class MainMenuActivity extends Activity {

int pending = 0;
JSONArray tables = new JSONArray();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pending = getIntent().getIntExtra("Pending Table", 0);

setContentView(R.layout.activity_main_menu_tables);
GridView tablesGrid = (GridView) findViewById(R.id.main_menu_tables_grid);

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);

FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = firebaseDatabase.getReference(prefs.getString("mode", "pythonanywhere")
+ "/store_" + prefs.getInt("store_id", 0) + "/tables");
final TableGridAdapter tableGridAdapter = new TableGridAdapter(this, databaseReference, pending);
tablesGrid.setAdapter(tableGridAdapter);

tablesGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
view.setSelected(true);
tables = tableGridAdapter.getTables();

try {
table = tables.getJSONObject(i).getInt("id");
tableName = tables.getJSONObject(i).getString("name");
availability = tables.getJSONObject(i).getInt("active");
} catch (JSONException e) {
e.printStackTrace();
}

flag = false;
createMainMenu();
}
});
}

}

关于java - 使用 getValue 调用 Firebase 时,在类 org.json.JSONObject 上找不到要序列化的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45380647/

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