Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Android internet数据的ArrayList 嗨,有一个问题,我怎样才能从互联网上加载一个带有数据的ArrayList?我想要实现的是在EditText中输入一个文本,当按下按钮时,一个recyclerview将加载来自该搜索的所有数据_Android_Android Studio - Fatal编程技术网

带有Android internet数据的ArrayList 嗨,有一个问题,我怎样才能从互联网上加载一个带有数据的ArrayList?我想要实现的是在EditText中输入一个文本,当按下按钮时,一个recyclerview将加载来自该搜索的所有数据

带有Android internet数据的ArrayList 嗨,有一个问题,我怎样才能从互联网上加载一个带有数据的ArrayList?我想要实现的是在EditText中输入一个文本,当按下按钮时,一个recyclerview将加载来自该搜索的所有数据,android,android-studio,Android,Android Studio,我创建了以下类: public class ParseItem { private String imgUrl; private String title; private String detailUrl; public ParseItem() { } public ParseItem(String imgUrl, String title, String detailUrl) { this.imgUrl = imgUrl;

我创建了以下

public class ParseItem {
    private String imgUrl;
    private String title;
    private String detailUrl;

    public ParseItem() {
    }

    public ParseItem(String imgUrl, String title, String detailUrl) {
        this.imgUrl = imgUrl;
        this.title = title;
        this.detailUrl = detailUrl;
    }

    public String getImgUrl() {
        return imgUrl;
    }

    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDetailUrl() {
        return detailUrl;
    }

    public void setDetailUrl(String detailUrl) {
        this.detailUrl = detailUrl;
    }
}
public class ParseAdapter extends RecyclerView.Adapter<ParseAdapter.ViewHolder> {

    private ArrayList<ParseItem> parseItems;
    private Context context;

    public ParseAdapter(ArrayList<ParseItem> parseItems, Context context) {
        this.parseItems = parseItems;
        this.context = context;
    }

    @NonNull
    @Override
    public ParseAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.parse_item, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ParseAdapter.ViewHolder holder, int position) {
        ParseItem parseItem = parseItems.get(position);
        holder.textView.setText(parseItem.getTitle());
        Picasso.get().load(parseItem.getImgUrl()).into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return parseItems.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        ImageView imageView;
        TextView textView;

        public ViewHolder(@NonNull View view) {
            super(view);
            imageView = view.findViewById(R.id.imageView);
            textView = view.findViewById(R.id.textView);
            view.setOnClickListener(this);
        }
    }

    public void setFilter(ArrayList<ParseItem> newList) {
        parseItems = new ArrayList<>();
        parseItems.addAll(newList);
        notifyDataSetChanged();
    }
}
public class MainActivity extends AppCompatActivity {
    Button buscar;
    EditText textoBusqueda;

    private RecyclerView recyclerView;
    private ParseAdapter adapter;
    private ArrayList<ParseItem> parseItems = new ArrayList<>();
    private ProgressBar progressBar;

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onResume();

        progressBar = findViewById(R.id.progressBar);
        recyclerView = findViewById(R.id.recyclerView);

        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter = new ParseAdapter(parseItems, this);
        recyclerView.setAdapter(adapter);



        textoBusqueda = (EditText)findViewById(R.id.etBuscar);

        String texto = textoBusqueda.getText().toString();
        buscar = (Button)findViewById(R.id.btnBusqueda);

        buscar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(TextUtils.isEmpty(textoBusqueda.getText())){
                    Toast.makeText(MainActivity.this, "Debe ingresar el nombre del libro.", Toast.LENGTH_LONG).show();
                    textoBusqueda.setFocusable(true);
                }else{
                    Content content = new Content();
                    content.execute();
                }
            }
        });
    }

    private class Content extends AsyncTask<Void,Void,Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressBar.setVisibility(View.VISIBLE);
            progressBar.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            progressBar.setVisibility(View.GONE);
            progressBar.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_out));
            adapter.notifyDataSetChanged();
        }

        @Override
        protected Void doInBackground(Void... voids) {
            String url = "http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion/search/?q="+ textoBusqueda.getText().toString();
            try {
                Document doc = Jsoup.connect(url).get();

                Elements data = doc.select("div.span1");
                int size = data.size();
                Log.d("doc", "doc: "+doc);
                Log.d("data", "data: "+data);
                Log.d("size", ""+size);
                for (int i = 0; i < size; i++) {
                    String imgUrl = data.select("div.span1")
                            .select("img")
                            .eq(i)
                            .attr("src");

                    String title = data.select("div.span7")
                            .select("span")
                            .eq(i)
                            .text();

                    String detailUrl = data.select("div.span7")
                            .select("a")
                            .eq(i)
                            .attr("href");

                    parseItems.add(new ParseItem(imgUrl, title, detailUrl));
                    Log.d("items", "img: " + imgUrl + " . title: " + title);
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
}
我将其传递给适配器

public class ParseItem {
    private String imgUrl;
    private String title;
    private String detailUrl;

    public ParseItem() {
    }

    public ParseItem(String imgUrl, String title, String detailUrl) {
        this.imgUrl = imgUrl;
        this.title = title;
        this.detailUrl = detailUrl;
    }

    public String getImgUrl() {
        return imgUrl;
    }

    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDetailUrl() {
        return detailUrl;
    }

    public void setDetailUrl(String detailUrl) {
        this.detailUrl = detailUrl;
    }
}
public class ParseAdapter extends RecyclerView.Adapter<ParseAdapter.ViewHolder> {

    private ArrayList<ParseItem> parseItems;
    private Context context;

    public ParseAdapter(ArrayList<ParseItem> parseItems, Context context) {
        this.parseItems = parseItems;
        this.context = context;
    }

    @NonNull
    @Override
    public ParseAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.parse_item, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ParseAdapter.ViewHolder holder, int position) {
        ParseItem parseItem = parseItems.get(position);
        holder.textView.setText(parseItem.getTitle());
        Picasso.get().load(parseItem.getImgUrl()).into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return parseItems.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        ImageView imageView;
        TextView textView;

        public ViewHolder(@NonNull View view) {
            super(view);
            imageView = view.findViewById(R.id.imageView);
            textView = view.findViewById(R.id.textView);
            view.setOnClickListener(this);
        }
    }

    public void setFilter(ArrayList<ParseItem> newList) {
        parseItems = new ArrayList<>();
        parseItems.addAll(newList);
        notifyDataSetChanged();
    }
}
public class MainActivity extends AppCompatActivity {
    Button buscar;
    EditText textoBusqueda;

    private RecyclerView recyclerView;
    private ParseAdapter adapter;
    private ArrayList<ParseItem> parseItems = new ArrayList<>();
    private ProgressBar progressBar;

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onResume();

        progressBar = findViewById(R.id.progressBar);
        recyclerView = findViewById(R.id.recyclerView);

        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter = new ParseAdapter(parseItems, this);
        recyclerView.setAdapter(adapter);



        textoBusqueda = (EditText)findViewById(R.id.etBuscar);

        String texto = textoBusqueda.getText().toString();
        buscar = (Button)findViewById(R.id.btnBusqueda);

        buscar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(TextUtils.isEmpty(textoBusqueda.getText())){
                    Toast.makeText(MainActivity.this, "Debe ingresar el nombre del libro.", Toast.LENGTH_LONG).show();
                    textoBusqueda.setFocusable(true);
                }else{
                    Content content = new Content();
                    content.execute();
                }
            }
        });
    }

    private class Content extends AsyncTask<Void,Void,Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressBar.setVisibility(View.VISIBLE);
            progressBar.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            progressBar.setVisibility(View.GONE);
            progressBar.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_out));
            adapter.notifyDataSetChanged();
        }

        @Override
        protected Void doInBackground(Void... voids) {
            String url = "http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion/search/?q="+ textoBusqueda.getText().toString();
            try {
                Document doc = Jsoup.connect(url).get();

                Elements data = doc.select("div.span1");
                int size = data.size();
                Log.d("doc", "doc: "+doc);
                Log.d("data", "data: "+data);
                Log.d("size", ""+size);
                for (int i = 0; i < size; i++) {
                    String imgUrl = data.select("div.span1")
                            .select("img")
                            .eq(i)
                            .attr("src");

                    String title = data.select("div.span7")
                            .select("span")
                            .eq(i)
                            .text();

                    String detailUrl = data.select("div.span7")
                            .select("a")
                            .eq(i)
                            .attr("href");

                    parseItems.add(new ParseItem(imgUrl, title, detailUrl));
                    Log.d("items", "img: " + imgUrl + " . title: " + title);
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
}
公共类ParseAdapter扩展了RecyclerView.Adapter{ 私有ArrayList解析项; 私人语境; 公共ParseAdapter(ArrayList parseItems,上下文){ this.parseItems=parseItems; this.context=上下文; } @非空 @凌驾 public ParseAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){ View-View=LayoutInflater.from(parent.getContext()).flate(R.layout.parse_项,parent,false); 返回新的ViewHolder(视图); } @凌驾 public void onBindViewHolder(@NonNull ParseAdapter.ViewHolder,int位置){ ParseItem ParseItem=parseItems.get(位置); holder.textView.setText(parseItem.getTitle()); Picasso.get().load(parseItem.getImgUrl()).into(holder.imageView); } @凌驾 public int getItemCount(){ 返回parseItems.size(); } 公共类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{ 图像视图图像视图; 文本视图文本视图; 公共视图持有者(@NonNull视图){ 超级(视图); imageView=view.findViewById(R.id.imageView); textView=view.findViewById(R.id.textView); view.setOnClickListener(这个); } } public void setFilter(ArrayList newList){ parseItems=newArrayList(); parseItems.addAll(newList); notifyDataSetChanged(); } } 这就是我在活动中所做的:

public class ParseItem {
    private String imgUrl;
    private String title;
    private String detailUrl;

    public ParseItem() {
    }

    public ParseItem(String imgUrl, String title, String detailUrl) {
        this.imgUrl = imgUrl;
        this.title = title;
        this.detailUrl = detailUrl;
    }

    public String getImgUrl() {
        return imgUrl;
    }

    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDetailUrl() {
        return detailUrl;
    }

    public void setDetailUrl(String detailUrl) {
        this.detailUrl = detailUrl;
    }
}
public class ParseAdapter extends RecyclerView.Adapter<ParseAdapter.ViewHolder> {

    private ArrayList<ParseItem> parseItems;
    private Context context;

    public ParseAdapter(ArrayList<ParseItem> parseItems, Context context) {
        this.parseItems = parseItems;
        this.context = context;
    }

    @NonNull
    @Override
    public ParseAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.parse_item, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ParseAdapter.ViewHolder holder, int position) {
        ParseItem parseItem = parseItems.get(position);
        holder.textView.setText(parseItem.getTitle());
        Picasso.get().load(parseItem.getImgUrl()).into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return parseItems.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        ImageView imageView;
        TextView textView;

        public ViewHolder(@NonNull View view) {
            super(view);
            imageView = view.findViewById(R.id.imageView);
            textView = view.findViewById(R.id.textView);
            view.setOnClickListener(this);
        }
    }

    public void setFilter(ArrayList<ParseItem> newList) {
        parseItems = new ArrayList<>();
        parseItems.addAll(newList);
        notifyDataSetChanged();
    }
}
public class MainActivity extends AppCompatActivity {
    Button buscar;
    EditText textoBusqueda;

    private RecyclerView recyclerView;
    private ParseAdapter adapter;
    private ArrayList<ParseItem> parseItems = new ArrayList<>();
    private ProgressBar progressBar;

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onResume();

        progressBar = findViewById(R.id.progressBar);
        recyclerView = findViewById(R.id.recyclerView);

        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter = new ParseAdapter(parseItems, this);
        recyclerView.setAdapter(adapter);



        textoBusqueda = (EditText)findViewById(R.id.etBuscar);

        String texto = textoBusqueda.getText().toString();
        buscar = (Button)findViewById(R.id.btnBusqueda);

        buscar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(TextUtils.isEmpty(textoBusqueda.getText())){
                    Toast.makeText(MainActivity.this, "Debe ingresar el nombre del libro.", Toast.LENGTH_LONG).show();
                    textoBusqueda.setFocusable(true);
                }else{
                    Content content = new Content();
                    content.execute();
                }
            }
        });
    }

    private class Content extends AsyncTask<Void,Void,Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressBar.setVisibility(View.VISIBLE);
            progressBar.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            progressBar.setVisibility(View.GONE);
            progressBar.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_out));
            adapter.notifyDataSetChanged();
        }

        @Override
        protected Void doInBackground(Void... voids) {
            String url = "http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion/search/?q="+ textoBusqueda.getText().toString();
            try {
                Document doc = Jsoup.connect(url).get();

                Elements data = doc.select("div.span1");
                int size = data.size();
                Log.d("doc", "doc: "+doc);
                Log.d("data", "data: "+data);
                Log.d("size", ""+size);
                for (int i = 0; i < size; i++) {
                    String imgUrl = data.select("div.span1")
                            .select("img")
                            .eq(i)
                            .attr("src");

                    String title = data.select("div.span7")
                            .select("span")
                            .eq(i)
                            .text();

                    String detailUrl = data.select("div.span7")
                            .select("a")
                            .eq(i)
                            .attr("href");

                    parseItems.add(new ParseItem(imgUrl, title, detailUrl));
                    Log.d("items", "img: " + imgUrl + " . title: " + title);
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
}
public类MainActivity扩展了AppCompatActivity{
按钮客车;
EditText textoBusqueda;
私人回收站;
专用解析适配器;
private ArrayList parseItems=new ArrayList();
私人ProgressBar ProgressBar;
@RequiresApi(api=Build.VERSION\u code.N)
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@凌驾
受保护的void onResume(){
super.onResume();
progressBar=findViewById(R.id.progressBar);
recyclerView=findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
adapter=新的ParseAdapter(parseItems,this);
recyclerView.setAdapter(适配器);
textObjusqueda=(EditText)findViewById(R.id.etBuscar);
字符串texto=textoBusqueda.getText().toString();
总线=(按钮)findViewById(R.id.btnBusqueda);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(TextUtils.isEmpty(textoBusqueda.getText()){
Toast.makeText(MainActivity.this,“Debe ingresar el nombre del libro.”,Toast.LENGTH_LONG.show();
textoBusqueda.setFocusable(true);
}否则{
内容=新内容();
content.execute();
}
}
});
}
私有类内容扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
progressBar.setVisibility(View.VISIBLE);
progressBar.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,android.R.anim.fade_in));
}
@凌驾
受保护的void onPostExecute(void避免){
super.onPostExecute(避免);
progressBar.setVisibility(View.GONE);
progressBar.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,android.R.anim.fade_out));
adapter.notifyDataSetChanged();
}
@凌驾
受保护的空位背景(空位…空位){
字符串url=”http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion/search/?q=“+textoBusqueda.getText().toString();
试一试{
Document doc=Jsoup.connect(url.get();
元素数据=文件选择(“div.span1”);
int size=data.size();
日志d(“文件”,“文件:”+doc);
Log.d(“数据”,“数据:”+数据);
Log.d(“尺寸”,“尺寸+尺寸”);
对于(int i=0;i
更新:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="@color/negro">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:id="@+id/linearBuscar"
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:layout_height="70dp"
            android:orientation="horizontal">
            <EditText
                android:textColor="@color/blanco"
                android:hint="Buscar..."
                android:textColorHint="@color/blanco"
                android:layout_marginTop="10dp"
                android:layout_width="180dp"
                android:layout_height="50dp"
                android:id="@+id/etBuscar"/>
            <Button
                android:layout_marginTop="10dp"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:textColor="@color/blanco"
                android:id="@+id/btnBusqueda"
                android:background="@drawable/ic_search"/>
        </LinearLayout>

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

        <ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="50dp"
            android:layout_height="50dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:indeterminate="true"
            android:visibility="gone"/>
    </LinearLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="165dp"
        style="@style/CardView.Light"
        android:layout_margin="8dp"
        tools:ignore="MissingConstraints">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:scaleType="centerCrop"
            android:src="#88888888"/>

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_gravity="bottom"
            android:src="@drawable/gradient"/>

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Title"
            style="@style/TextAppearance.AppCompat.Medium"
            android:layout_gravity="bottom"
            android:layout_margin="12dp"
            android:textColor="#fff"/>

    </androidx.cardview.widget.CardView>

</androidx.constraintlayout.widget.ConstraintLayout>
活动\u main:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="@color/negro">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:id="@+id/linearBuscar"
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:layout_height="70dp"
            android:orientation="horizontal">
            <EditText
                android:textColor="@color/blanco"
                android:hint="Buscar..."
                android:textColorHint="@color/blanco"
                android:layout_marginTop="10dp"
                android:layout_width="180dp"
                android:layout_height="50dp"
                android:id="@+id/etBuscar"/>
            <Button
                android:layout_marginTop="10dp"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:textColor="@color/blanco"
                android:id="@+id/btnBusqueda"
                android:background="@drawable/ic_search"/>
        </LinearLayout>

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

        <ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="50dp"
            android:layout_height="50dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:indeterminate="true"
            android:visibility="gone"/>
    </LinearLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="165dp"
        style="@style/CardView.Light"
        android:layout_margin="8dp"
        tools:ignore="MissingConstraints">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:scaleType="centerCrop"
            android:src="#88888888"/>

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_gravity="bottom"
            android:src="@drawable/gradient"/>

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Title"
            style="@style/TextAppearance.AppCompat.Medium"
            android:layout_gravity="bottom"
            android:layout_margin="12dp"
            android:textColor="#fff"/>

    </androidx.cardview.widget.CardView>

</androidx.constraintlayout.widget.ConstraintLayout>

分析项目:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="@color/negro">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:id="@+id/linearBuscar"
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:layout_height="70dp"
            android:orientation="horizontal">
            <EditText
                android:textColor="@color/blanco"
                android:hint="Buscar..."
                android:textColorHint="@color/blanco"
                android:layout_marginTop="10dp"
                android:layout_width="180dp"
                android:layout_height="50dp"
                android:id="@+id/etBuscar"/>
            <Button
                android:layout_marginTop="10dp"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:textColor="@color/blanco"
                android:id="@+id/btnBusqueda"
                android:background="@drawable/ic_search"/>
        </LinearLayout>

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

        <ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="50dp"
            android:layout_height="50dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:indeterminate="true"
            android:visibility="gone"/>
    </LinearLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="165dp"
        style="@style/CardView.Light"
        android:layout_margin="8dp"
        tools:ignore="MissingConstraints">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:scaleType="centerCrop"
            android:src="#88888888"/>

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_gravity="bottom"
            android:src="@drawable/gradient"/>

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Title"
            style="@style/TextAppearance.AppCompat.Medium"
            android:layout_gravity="bottom"
            android:layout_margin="12dp"
            android:textColor="#fff"/>

    </androidx.cardview.widget.CardView>

</androidx.constraintlayout.widget.ConstraintLayout>


但是,它不会加载任何内容,并且logcat不会显示任何错误和建议?

您检查过视图了吗?Recyclerview具有适当的渲染空间,或者没有