Я пытаюсь получить какой-нибудь текст из предмета повторного просмотра, который есть в моем фрагменте.Просмотр рециркулятора получает данные из Firebase и сохраняет их в списке, а затем добавляет все элементы в просмотр рециркулятора.
То, что я хочу сделать, - это когда я нажимаю кнопку в просмотре карты любого из элементов вИз окна просмотра я получаю соответствующие текстовые значения в выбранной опции.
Мой код:
public class Products extends Fragment {
private FirebaseRecyclerAdapter adapter;
public RecyclerView productRecyclerView;
ImageButton btnPopupMenu;
String key, keyholder;
TextView productName, productNameHolder;
int position;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_products, container, false);
productRecyclerView = (RecyclerView) rootView.findViewById(R.id.rvProducts);
productRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
final FloatingActionButton btnAddProd = rootView.findViewById(R.id.btnAddProduct);
final FloatingActionButton btnSearchProd = rootView.findViewById(R.id.fabSearchProduct);
final FloatingActionButton btnRetract = rootView.findViewById(R.id.fabMainRetract);
final FloatingActionButton btnMain = rootView.findViewById(R.id.fabMain);
btnAddProd.hide();
btnSearchProd.hide();
btnRetract.hide();
btnMain.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
btnAddProd.show();
btnSearchProd.show();
btnRetract.show();
btnMain.hide();
}
});
btnRetract.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
btnAddProd.hide();
btnSearchProd.hide();
btnMain.show();
btnRetract.hide();
}
});
productRecyclerView.setHasFixedSize(true);
fetch();
return rootView;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView productType;
public TextView productID;
public TextView productName;
public LinearLayout rootProduct;
public ImageButton btnPopupMenu;
public ViewHolder(View itemView) {
super(itemView);
rootProduct = itemView.findViewById(R.id.list_rootProducts);
productName = itemView.findViewById(R.id.list_productName);
productType = itemView.findViewById(R.id.list_productType);
productID = itemView.findViewById(R.id.list_productID);
btnPopupMenu = itemView.findViewById(R.id.ib_popup_menu);
productNameHolder = itemView.findViewById(R.id.tvHolder);
position = getAdapterPosition();
Toast.makeText(getContext(), "Position is: "+position, Toast.LENGTH_SHORT).show();
}
public void setProductName(String string) {
productName.setText(string);
}
public void setProductType(String string) {
productType.setText(string);
}
public void setProductID(String string) {
productID.setText(string);
}
}
public interface RecyclerViewClickListener {
public void recyclerViewListClicked(View v, int position);
}
private void fetch() {
Query query = FirebaseDatabase.getInstance().getReference().child("PRODUCTS");
final FirebaseRecyclerOptions<ProductDetails> options =
new FirebaseRecyclerOptions.Builder<ProductDetails>()
.setQuery(query, new SnapshotParser<ProductDetails>() {
@NonNull
@Override
public ProductDetails parseSnapshot(@NonNull DataSnapshot snapshot) {
return new ProductDetails
(snapshot.child("Product_Name").getValue().toString(),
snapshot.child("Product_Type").getValue().toString(),
snapshot.child("Product_ID").getValue().toString());
}
})
.build();
adapter = new FirebaseRecyclerAdapter<ProductDetails, ViewHolder>(options) {
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_products, parent, false);
return new ViewHolder(view);
}
@Override
protected void onBindViewHolder(final ViewHolder holder, final int position, final ProductDetails model) {
holder.setProductName(model.getProductName());
holder.setProductType(model.getProductType());
holder.setProductID(model.getProductID());
holder.btnPopupMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu pm = new PopupMenu(getContext(), view);
pm.getMenuInflater().inflate(R.menu.popup_menu, pm.getMenu());
pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.menu_edit_product:
return true;
case R.id.menu_delete_product:
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("DELETE Product");
builder.setMessage("You are about to delete the selected product. Continue?");
builder.setCancelable(false);
builder.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setPositiveButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
return true;
}
return true;
}
});
pm.show();
}
});
}
};
productRecyclerView.setAdapter(adapter);
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//you can set the title for your toolbar here for different fragments different titles
getActivity().setTitle("Products");
}
}
Моя главная цель - просто получить текст «Product_Name» и установить его в Test textView, чтобы проверить, правильно ли я получаю название продукта выбранногопункт рециркуляции.
Я буду использовать этот текст для ссылки на его ключ из базы данных Firebase и позволю функциям редактирования и удаления работать правильно.