我正在开发一个大学搜索应用程序,但我无法解决这个错误。
代码如下:
public class searchEngineActivity extends AppCompatActivity {
public String stateSelected;
public String courseSelected;
public RecyclerView searchRecyclerView;
public WebView webView;
public FirebaseRecyclerOptions adapter;
public DatabaseReference databaseReference;
String queryState, queryCourse;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_engine);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(getResources().getColor(R.color.colorPrimaryDark));
Bundle bundle = getIntent().getExtras();
stateSelected = bundle.getString("stateSelected");
courseSelected = bundle.getString("courseSelected");
Log.e("arguments",stateSelected+courseSelected );
makeQuery(stateSelected, courseSelected);
searchRecyclerView = (RecyclerView) findViewById(R.id.searchRecyclerView);
webView = (WebView) findViewById(R.id.webView);
searchRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
setAdapter();
searchRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.HORIZONTAL));
}
public void makeQuery(String q, String c) {
queryState = q.replaceAll(" ", "-");
queryState = queryState.toLowerCase();
queryCourse = c.toLowerCase();
}
public void setAdapter() {
Query query = FirebaseDatabase.getInstance().getReference().child("searchengines");
FirebaseRecyclerOptions<searchModelClass> options = new FirebaseRecyclerOptions.Builder<searchModelClass>().setQuery(query, searchModelClass.class).build();
adapter = new FirebaseRecyclerPagingAdapter<searchModelClass, androidx.recyclerview.widget.RecyclerView.ViewHolder>(options) {
//@Override
protected void onBindViewHolder(@NonNull searchRecyclerViewHolder holder, final int position, @NonNull searchModelClass model) {
holder.setSiteImage(model.getImage());
holder.setSiteName(model.getName());
holder.setSiteURL(model.getUrl());
}
@Override
protected void onBindViewHolder(@androidx.annotation.NonNull @NonNull RecyclerView.ViewHolder viewHolder, int position, @androidx.annotation.NonNull @NonNull searchModelClass model) {
}
@Override
protected void onLoadingStateChanged(@androidx.annotation.NonNull @NonNull LoadingState state) {
}
@NonNull
//@Override
public searchRecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.search_recycler_view, parent, false);
final searchRecyclerViewHolder viewHolder = new searchRecyclerViewHolder(view);
viewHolder.setOnClickListener(new searchRecyclerViewHolder.ClickListener() {
@Override
public void onClick(View view, int position) {
**databaseReference = adapter.getCurrentList(position);**
databaseReference = databaseReference.child(queryCourse);
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String queryURL = dataSnapshot.getValue(String.class);
queryURL = queryURL.replaceAll("state", queryState);
webView.loadUrl(queryURL);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
return viewHolder;
}
};
searchRecyclerView.setAdapter(adapter);
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerPagingAdapter<Object, RecyclerView.ViewHolder> firebaseRecyclerAdapter = null;
firebaseRecyclerAdapter.startListening();
} //UPDATING RECYCLER VIEW REGULARLY FROM THE START OF FRAGMENT
}
错误是:
无法解析“FirebaseRecyclerOptions”中的方法“getCurrentList”:101
我尝试使用其他库代替 firebase ui 库进行回收视图,但我必须更改我的整个代码。我还能做什么?
您的
adapter
对象是FirebaseRecyclerPagingAdapter
类型的对象。当您尝试在此类对象上调用 getCurrentList(position)
时,出现以下错误是预期的行为:
Cannot resolve method 'getCurrentList' in 'FirebaseRecyclerOptions':101
因为适配器类中没有
getCurrentList()
方法。此外,如果存在这样的方法,正如其名称所示,它会返回一个列表而不是 DatabaseReference
对象。因此,看到您的代码,应该删除产生该错误的那行代码。
你在找
getRef()
吗?那就是:
databaseReference = adapter.getRef(position);
我强烈建议在这种情况下将您正在使用的类的源代码放在手边,因为整个
FirebaseAdapter.java
文件 只有 47 行长,可以快速帮助您找到 does 和 doesn' t存在。