无法解析“FirebaseRecyclerOptions”中的方法“getCurrentList”

问题描述 投票:0回答:2

我正在开发一个大学搜索应用程序,但我无法解决这个错误。

代码如下:

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 库进行回收视图,但我必须更改我的整个代码。我还能做什么?

java android firebase firebase-realtime-database firebaseui
2个回答
1
投票

您的

adapter
对象是
FirebaseRecyclerPagingAdapter
类型的对象。当您尝试在此类对象上调用
getCurrentList(position)
时,出现以下错误是预期的行为:

Cannot resolve method 'getCurrentList' in 'FirebaseRecyclerOptions':101

因为适配器类中没有

getCurrentList()
方法。此外,如果存在这样的方法,正如其名称所示,它会返回一个列表而不是
DatabaseReference
对象。因此,看到您的代码,应该删除产生该错误的那行代码。


0
投票

你在找

getRef()
吗?那就是:

databaseReference = adapter.getRef(position);

我强烈建议在这种情况下将您正在使用的类的源代码放在手边,因为整个

FirebaseAdapter.java
文件 只有 47 行长,可以快速帮助您找到 doesdoesn' t存在。

© www.soinside.com 2019 - 2024. All rights reserved.