【发布时间】:2018-09-26 21:22:41
【问题描述】:
我正在努力让这件事发挥作用!!!我正在使用 Firebase Ui,由于它已更改为 3.0,我不知道如何使其工作了。我有一个名为 UsersViewHolder 的自定义视图,它将所有必要的信息设置到我的视图中。但是,我不知道如何将视图与 Firebase Recycler Adapter 绑定。
我的 ViewHolder
package br.sosqueen.com.sosqueen;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
/**
* Created by calvin on 15/04/2018.
*/
public class UsersViewHolder extends RecyclerView.ViewHolder {
View mView;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setDetails(Context ctx, String userName, String userStatus, String userImage){
TextView user_name = (TextView) mView.findViewById(R.id.name_text);
TextView user_status = (TextView) mView.findViewById(R.id.status_text);
ImageView user_image = (ImageView) mView.findViewById(R.id.profile_image);
user_name.setText(userName);
user_status.setText(userStatus);
}
}
我的班级负责链接它们
package br.sosqueen.com.sosqueen;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
public class SearchFragment extends android.support.v4.app.Fragment {
private EditText mSearchField;
private ImageButton mSearchBtn;
private RecyclerView mResultList;
private DatabaseReference mUserDatabase;
public static SearchFragment newInstance() { return new SearchFragment(); }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_search, container, false);
mSearchField = (EditText) view.findViewById(R.id.search_field);
mSearchBtn = (ImageButton) view.findViewById(R.id.search_btn);
mResultList = (RecyclerView) view.findViewById(R.id.result_list);
mResultList.setHasFixedSize(true);
mResultList.setLayoutManager(new LinearLayoutManager(mResultList.getContext()));
mSearchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String searchText = mSearchField.getText().toString();
firebaseUserSearch(searchText);
}
});
mUserDatabase = FirebaseDatabase.getInstance().getReference("users");
return view;
}
public void firebaseUserSearch(String searchText) {
Toast.makeText(getContext(), "Started Search", Toast.LENGTH_LONG).show();
// Query firebaseSearchQuery = mUserDatabase.orderByChild("username").startAt(searchText).endAt(searchText + "\uf8ff");
Query firebaseSearchQuery = mUserDatabase.getRef();
FirebaseRecyclerOptions<UserDetails> options =
new FirebaseRecyclerOptions.Builder<UserDetails>()
.setQuery(firebaseSearchQuery, UserDetails.class)
.build();
Log.d("debugaoBuild", "chegou a buildar");
FirebaseRecyclerAdapter<UserDetails, UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<UserDetails, UsersViewHolder>(options) {
@Override
public UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// UsersViewHolder v = null;
v = //LayoutInflater.from(parent.getContext()).inflate(R.layout.list_layout, parent, false);
return v;
}
@Override
protected void onBindViewHolder(UsersViewHolder holder, int position, UserDetails model) {
holder.setDetails(getContext(), UserDetails.username, UserDetails.status, "image");
}
};
firebaseRecyclerAdapter.startListening();
mResultList.setAdapter(firebaseRecyclerAdapter);
}
}
R.layout.list_layout 是我为用户设置信息的布局。但我不知道在哪里链接它们。我用它和 onCreateViewHolder 做什么???求救,我有点绝望
【问题讨论】:
标签: android firebase firebase-realtime-database real-time firebaseui