You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android RecyclerView不显示问题及按需显示需求求助

问题描述

我在首页添加了SearchView,期望RecyclerView仅在搜索后显示(代码中未设置隐藏,但它却无法显示),同时要保证仅在搜索时显示该RecyclerView,不影响其他按钮的布局。我尝试过设置LinearLayoutManager等多种方案,参考Stack Overflow和ChatGPT的建议后仍未解决。另外,我还有home_fragment.java文件,若相关逻辑在HomeFragment中,是否需要将MainActivity.java中的代码迁移至home_fragment.java?

Adapter类

package com.jhc.ygc;

import android.annotation.SuppressLint;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<SearchItems> results;

    public MyAdapter(List<SearchItems> results) {
        this.results = results;
    }
    
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_search, parent, false);
        return new ViewHolder(view);
    }
    
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, @SuppressLint("RecyclerView") int position) {
        SearchItems item = results.get(position);
        holder.nameTextView.setText(item.getName());
    
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Perform action when the item is clicked
                // You can access the selected item using the position parameter
                SearchItems selectedItem = results.get(position);
                String selectedName = selectedItem.getName();
    
                // Call your desired method or perform the necessary action with the selected item
                performAction(selectedItem);
            }
        });
    }
    
    @Override
    public int getItemCount() {
        return results.size();
    }
    
    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView nameTextView;
    
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            nameTextView = itemView.findViewById(R.id.text_name);
        }
    }
    
    private void performAction(SearchItems item) {
        // Implement your desired action here
        // This method will be called when an item is clicked
        String link = item.getLink();
        Character type = item.getType();
        switch (type) {
            case 'v':
                // Video
                // Add your video action here
                break;
            case 'a':
                // Audio
                // Add your audio action here
                break;
            case 'q':
                // Quiz
                // Add your quiz action here
                break;
            case 'e':
                // Ebook
                // Add your ebook action here
                break;
            default:
                // Error or fallback action
                break;
        }
    }

}

Database类

package com.jhc.ygc;

import java.util.ArrayList;
import java.util.List;

public class Database {
    private List<SearchItems> myObjects;

    public Database() {
        myObjects = new ArrayList<>();
        //Grade 6 Video
        myObjects.add(new SearchItems("Grade 6 Science", "file:///android_asset/interactive-video.html?grade=6&subject=science",'v'));
        myObjects.add(new SearchItems("Grade 6 Maths", "file:///android_asset/interactive-video.html?grade=6&subject=maths",'v'));
        myObjects.add(new SearchItems("Grade 6 Tamil", "file:///android_asset/interactive-video.html?grade=6&subject=tamil",'v'));
        myObjects.add(new SearchItems("Grade 6 English", "file:///android_asset/interactive-video.html?grade=6&subject=english",'v'));
        myObjects.add(new SearchItems("Grade 6 History", "file:///android_asset/interactive-video.html?grade=6&subject=history",'v'));
        myObjects.add(new SearchItems("Grade 6 ICT", "file:///android_asset/interactive-video.html?grade=6&subject=ict",'v'));
        //Grade 7 Video
        myObjects.add(new SearchItems("Grade 7 Science", "file:///android_asset/interactive-video.html?grade=7&subject=science",'v'));
        myObjects.add(new SearchItems("Grade 7 Maths", "file:///android_asset/interactive-video.html?grade=7&subject=maths",'v'));
        myObjects.add(new SearchItems("Grade 7 Tamil", "file:///android_asset/interactive-video.html?grade=7&subject=tamil",'v'));
        myObjects.add(new SearchItems("Grade 7 English", "file:///android_asset/interactive-video.html?grade=7&subject=english",'v'));
        myObjects.add(new SearchItems("Grade 7 History", "file:///android_asset/interactive-video.html?grade=7&subject=history",'v'));
        myObjects.add(new SearchItems("Grade 7 ICT", "file:///android_asset/interactive-video.html?grade=7&subject=ict",'v'));
        //Grade 8 Video
        myObjects.add(new SearchItems("Grade 8 Science", "file:///android_asset/interactive-video.html?grade=8&subject=science",'v'));
        myObjects.add(new SearchItems("Grade 8 Maths", "file:///android_asset/interactive-video.html?grade=8&subject=maths",'v'));
        myObjects.add(new SearchItems("Grade 8 Tamil", "file:///android_asset/interactive-video.html?grade=8&subject=tamil",'v'));
        myObjects.add(new SearchItems("Grade 8 English", "file:///android_asset/interactive-video.html?grade=8&subject=english",'v'));
        myObjects.add(new SearchItems("Grade 8 History", "file:///android_asset/interactive-video.html?grade=8&subject=history",'v'));
        myObjects.add(new SearchItems("Grade 8 ICT", "file:///android_asset/interactive-video.html?grade=8&subject=ict",'v'));
        //Grade 9 Video
        myObjects.add(new SearchItems("Grade 9 Science", "file:///android_asset/interactive-video.html?grade=9&subject=science",'v'));
        myObjects.add(new SearchItems("Grade 9 Maths", "file:///android_asset/interactive-video.html?grade=9&subject=maths",'v'));
        myObjects.add(new SearchItems("Grade 9 Tamil", "file:///android_asset/interactive-video.html?grade=9&subject=tamil",'v'));
        myObjects.add(new SearchItems("Grade 9 English", "file:///android_asset/interactive-video.html?grade=9&subject=english",'v'));
        myObjects.add(new SearchItems("Grade 9 History", "file:///android_asset/interactive-video.html?grade=9&subject=history",'v'));
        myObjects.add(new SearchItems("Grade 9 ICT", "file:///android_asset/interactive-video.html?grade=9&subject=ict",'v'));
        //Grade 10 Video
        myObjects.add(new SearchItems("Grade 10 Science", "file:///android_asset/interactive-video.html?grade=10&subject=science",'v'));
        myObjects.add(new SearchItems("Grade 10 Maths", "file:///android_asset/interactive-video.html?grade=10&subject=maths",'v'));
        myObjects.add(new SearchItems("Grade 10 Tamil", "file:///android_asset/interactive-video.html?grade=10&subject=tamil",'v'));
        myObjects.add(new SearchItems("Grade 10 English", "file:///android_asset/interactive-video.html?grade=10&subject=english",'v'));
        myObjects.add(new SearchItems("Grade 10 History", "file:///android_asset/interactive-video.html?grade=10&subject=history",'v'));
        myObjects.add(new SearchItems("Grade 10 ICT", "file:///android_asset/interactive-video.html?grade=10&subject=ict",'v'));
        //Grade 11 Video
        myObjects.add(new SearchItems("Grade 11 Science", "file:///android_asset/interactive-video.html?grade=11&subject=science",'v'));
        myObjects.add(new SearchItems("Grade 11 Maths", "file:///android_asset/interactive-video.html?grade=11&subject=maths",'v'));
        myObjects.add(new SearchItems("Grade 11 Tamil", "file:///android_asset/interactive-video.html?grade=11&subject=tamil",'v'));
        myObjects.add(new SearchItems("Grade 11 English", "file:///android_asset/interactive-video.html?grade=11&subject=english",'v'));
        myObjects.add(new SearchItems("Grade 11 History", "file:///android_asset/interactive-video.html?grade=11&subject=history",'v'));
        myObjects.add(new SearchItems("Grade 11 ICT", "file:///android_asset/interactive-video.html?grade=11&subject=ict",'v'));
    }

    public List<SearchItems> searchObjects(String query) {
        List<SearchItems> results = new ArrayList<>();

        for (SearchItems object : myObjects) {
            if (object.getName().toLowerCase().contains(query.toLowerCase())) {
                results.add(object);
            }
        }

        return results;
    }
}

SearchItems类

package com.jhc.ygc;

public class SearchItems {
    private String name;
    private String link;
    private Character type; // AudioBook = a,Video = v, quiz=q,ebook=e (ONLY a,v,q,e)

    public SearchItems(String name, String link,Character type) {
        this.name = name;
        this.link = link;
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public String getLink() {
        return link;
    }

    public Character getType() {
        return type;
    }
}

item_search.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:gravity="center_vertical">

    <TextView
        android:id="@+id/text_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Item"
        android:textSize="20dp"/>
</FrameLayout>

activity_main.xml 部分代码

<SearchView
        android:id="@+id/search_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/search"
        android:orientation="vertical" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:visibility="visible"
        />

内容的提问来源于stack exchange,提问作者Adchayan Sivakumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:37:04