【问题标题】:FirebaseRecyclerAdapter will not inflateFirebaseRecyclerAdapter 不会膨胀
【发布时间】:2017-04-29 20:03:28
【问题描述】:

您好希望有人能看到问题所在。尝试从 firebase 数据库中获取数据并将其显示在使用 FirebaseRecyclerAdapter 中,但它仅在我单击操作栏中的 searchview 后才显示数据。就是不知道为什么。

public class CustomerFragment extends Fragment{

private FirebaseRecyclerAdapter<Customer,CustomerViewHolder> customerAdapter;
final String TAG = "CustomerFrag: ";
private EventBus eventBus = EventBus.getDefault();
private DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
private DatabaseReference customerRef = rootRef.child("customers");
private RecyclerView rvCustomer;

public CustomerFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    ((AppStart)getActivity()).getSupportActionBar().setSubtitle("Customer List");
    setHasOptionsMenu(true);        
    Log.d(TAG," onCreate");
}

// Inflate the menu; this adds items to the action bar if it is present.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu,inflater);
    menu.clear();
    inflater.inflate(R.menu.toolbar_customermenu, menu);
    MenuItem searchItem = menu.findItem(R.id.customerSearch);
    SearchView searchView = (SearchView) searchItem.getActionView();
    searchView.setQueryHint("Search Customer");
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return true;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return true;
        }
    });
    Log.d(TAG," onCreateOptionsMenu");
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_customer, container, false);
    rvCustomer = (RecyclerView)rootView.findViewById(R.id.rvCustomer);
    rvCustomer.setHasFixedSize(true);
    LinearLayoutManager manager = new LinearLayoutManager(getActivity());
    rvCustomer.setLayoutManager(manager);
    Log.d(TAG," onCreateView");
    customerAdapter = new FirebaseRecyclerAdapter<Customer,CustomerViewHolder>(Customer.class, R.layout.customer_cardview, CustomerViewHolder.class, customerRef) {
        @Override
        protected void populateViewHolder(CustomerViewHolder viewHolder, final Customer customer, final int position) {
            Log.d(TAG," populateViewHolder");
            viewHolder.tvCustomerName.setText(customer.getCustomerName());
            viewHolder.tvCustomerAddress.setText(customer.getCustomerAddress());
            viewHolder.tvCustomerTel.setText(customer.getCustomerTel());                
        }
    };
    rvCustomer.setAdapter(customerAdapter);
    return rootView;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    AppCompatActivity activity = (AppCompatActivity) getContext();
    FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
    Log.d(TAG," onOptionsItemsSelected");
    switch (item.getItemId()) {
        case R.id.customerSearch:
            Log.d(TAG,"Search icon pressed");
            return true;
        default:
            break;
    }
    return super.onOptionsItemSelected(item);
}

static class CustomerViewHolder extends RecyclerView.ViewHolder{
    private TextView tvCustomerName;
    private TextView tvCustomerAddress;
    private TextView tvCustomerTel;
    private CardView cvCustomer;

    public CustomerViewHolder(View itemView) {
        super(itemView);
        tvCustomerName = (TextView)itemView.findViewById(R.id.tvCustomerName);
        tvCustomerAddress = (TextView)itemView.findViewById(R.id.tvCustomerAddress);
        tvCustomerTel = (TextView)itemView.findViewById(R.id.tvCustomerTel);
        cvCustomer = (CardView)itemView.findViewById(R.id.cvCustomer);
        Log.d("CustFragment"," CustomerViewHolder");
    }

}
}

【问题讨论】:

    标签: android firebase firebase-realtime-database android-recyclerview


    【解决方案1】:

    在打了我的头几天后,我认为这是 recyclerView 布局高度未设置为 match_parent,高度和宽度都必须为 match_parent。

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 2019-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多