Ответ 1
Я немного поменяю то, что у вас есть, в плане структуры базы данных, надеюсь, немного упростится.
У нас будет 2 типа сохраненных данных:
Первый тип
Это node данные, которые вы добавите, и подготовьте их вручную, и мы будем называть его "Продукты". В этих продуктах node вы добавите идентификаторы продуктов, которые вы получили из игровой консоли google, а затем дайте им некоторые подробности:
Products
|
|--------Wood_id
| |
| |--name : "wood"
| --price: "10"
| -- ........
|
|---------Iron_id
|
|--name : "iron"
--price: "20"
-- ........
okay теперь позволяет определить приведенную выше диаграмму:
Wood_id или Iron_id: означает точный идентификатор, с которого вы создали свои продукты, в консоли Google Play. ((вы вводите его вручную в базе данных вместе со своими подробностями))
name: обозначает имя элемента, отображаемого в представлении recycler ((также вы вводите все эти данные вручную)).
цена: очки или все, что вы решите.
Итак, это материал, который вы вводите вручную в дереве базы данных в консоли firebase.
при заполнении в ресайклере это будет выглядеть как
|---------------|
| wood |
------------------
| iron |
| |
-----------------
Вы можете добиться этого с помощью Firebase UI ((что позволит вам легко получить узлы и просмотреть их в RecyclerView)).
до сих пор мы можем показывать пользовательские продукты и просматривать их в списке продуктов ((и каждый элемент несет с собой и идентификатор, равный id на консоли воспроизведения Google))
Второй тип
Является типом данных, которые мы добавим из приложения, которое (пользователи) node и (купленные предметы) node.
пользователи node похожи на
Users
|
|--------user1
| |
| |--name : "..."
| --e-mail: "..."
| -- ........
|
|---------user2
|
|--name : "..."
--e-mail: "..."
-- ........
В порядке, это node, который вам нужно добавить и обычно приходит после создания пользователя ((вещь регистрации)), но вы, похоже, достигли этого, используя вход в Google.
Итак, этот node не очень важен, но вы можете добавить его, если хотите.
А теперь посмотри, что мы будем делать. Мы позволим пользователю нажать на элемент, а затем мы проверим, существует ли этот элемент в его списке, если мы не покажем ему намерение платежа. После покупки товара мы добавим его в (Приобретенные предметы) node следующим образом:
Purchased items
|
|--------user1
| |
| |--Wood_id : "any_value"
| --Iron_id: "any_value"
|
|
|---------user2
|
|--Iron_id : "any_value"
Указанное дерево указывает, что пользователь1 приобрел (дерево и железо), в то время как пользователь 2 покупал только (железо).
когда пользователь2, например, нажимает на дерево, мы будем захватывать идентификатор продукта, связанный с деревом, который является (Wood_id), и мы будем запускать прослушиватель событий значения с использованием firebase, и мы проверим, имеет ли user2 (Wood_id) или нет, в наш случай user2 не имеет древесины. Таким образом, здесь вы можете использовать, если хотите, чтобы вы указали библиотеку биллинга и передали (Wood_id) для покупки с игровой консоли google, а в слушателях этой библиотеки вы упомянули, что вы проверяете успешность платежей (и здесь вы добавляете для user2 Wood_id в разделе "Приобретенные предметы" node, так что в следующий раз, когда user2 щелкает firebase, будет запускаться слушатель и не будет показывать платеж снова).
Вот как вы это сделаете, используя библиотеку, которую вы хотите использовать.
UPDATE
Как получить в recycler представление базы данных (Продукты).
сначала добавьте последнюю базу данных firebase и firebase ui
compile 'com.google.firebase: firebase-database: 11.4.2'
compile 'com.firebaseui: firebase-ui-database: 3.1.0'
после этого вам нужно создать класс java, который он вызывает (ProductClass) внутри него:
public class ProductsClass{
//these should be the same name as keys in your database
public String name;
public String product_id;
public String state;
//empty constructor
public ProductsClass(){
}
public ProductsClass(String name, String product_id, String state){
this.name=name;
this.product_id=product_id;
this.state=state;
}
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public String getProduct_id(){
return product_id;
}
public void setProduct_id(){
this.product_id=product_id;
}
public String getState(){
return state;
}
public void setState(){
this.sate=state;
}
}
теперь внутри вашей (активность продуктов)
private Recyclerview products_recycler;
private FirebaseAuth mauth;
private DatabaseReference products_ref;
private String currentuser;
//in on create
products_recycler=find it by id......
mauth=FirebaseAuth.getInstance();
currentuser=mauth.getCurrentUser().getUid();
products_ref=FirebaseDatabase.getInstance().getReference().child("products");
//manger
products_recycler.setHasFixedSize(true);
products_recycler.setLayoutManager(new LinearLayoutManager(this));
//in onstart
FirebaseRecyclerOptions< ProductsClass > options =
new FirebaseRecyclerOptions.Builder< ProductsClass >()
.setQuery(products_ref, ProductsClass.class)
.build();
FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter< ProductsClass, ProductsHolder>(options) {
@Override
public ProductsHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//inflate the single recycler view layout(item)
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.productslayout, parent, false);
return new ProductsHolder(view);
}
@Override
protected void onBindViewHolder(ProductsHolder holder, int position, ProductsClass model) {
//here you set stuff in items , get data, ....
//model is your class model (you get data from it)
}
};
// now set adapter
adapter.startListening();
products_recycler.setAdapter(adapter);
//make a static class called ProductsHolder in the same activity
public static class ProductsHolder extends RecyclerView.ViewHolder{
View view;
public ProductsHolder(View itemView){
view= itemView;
}
//what ever methods you need to add
}
Примечание: R.layout.productslayout - это настраиваемый макет для каждого элемента в представлении recycler.
таким образом вы получаете в любой активности любой node, который вы хотите.
ссылка ссылки: эта ссылка