当前位置: 首页 > 知识库问答 >
问题:

回收器视图和卡片视图不显示卡片

孙朝明
2023-03-14

这是我的活动:

public String id;
public String passPhrase;
public ArrayList<SongCell> songs;

private RecyclerView recyclerView;
private MyAdapter myAdapter;
private RecyclerView.LayoutManager layoutManager;


@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.songs_view_layout);

    Context context = this.getApplicationContext();
    Bundle stateData = getIntent().getExtras();

    try
    {
        id = stateData.getString("id");
        passPhrase = stateData.getString("passPhrase");

        ArrayList data;

        recyclerView = (RecyclerView) findViewById(R.id.song_list);
        recyclerView.setHasFixedSize(true);

        layoutManager = new LinearLayoutManager(this);

        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());

        data = new ArrayList<SongCell>();

        for (int i=0; i<5;i++)
        {
            data.add(new SongCell("Song "+i,"Artist "+i, null));
        }


        myAdapter = new MyAdapter(data);
        recyclerView.setAdapter(myAdapter);

    }
    catch(Exception e)
    {
        Log.d("Error: ", e.toString());
    }

}

卡片xml

<android.support.v7.widget.CardView android:layout_width="fill_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="6dp"
        >

        <ImageView
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:id="@+id/song_photo"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginRight="16dp"
            android:background="@drawable/error" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/song_name"
            android:textSize="30sp"
            android:text="Song Name"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:textColor="#000000" />

        <ImageButton
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:id="@+id/vote_button"
            android:layout_alignParentRight="true"
            android:layout_marginRight="8dp"
            android:background="@drawable/arrow" />

    </RelativeLayout>

</android.support.v7.widget.CardView>

活动xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:background="#2d2d2d">

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:paddingBottom="30dp"
        android:layout_marginBottom="10dp"
        android:background="#222222"></TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:paddingBottom="10dp">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center">

            <ImageView
                android:layout_width="70dp"
                android:layout_height="70dp"
                android:id="@+id/featSongImage1"
                android:contentDescription="@string/newsongimage"
                android:background="@drawable/error" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:text="@string/songname"
                android:id="@+id/featSongName1" />

            <ImageButton
                android:layout_width="25dp"
                android:layout_height="25dp"
                android:id="@+id/featSongButt1"
                android:background="@drawable/arrow"
                android:contentDescription="@string/votearrow" />
        </LinearLayout>

    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:foregroundGravity="fill_horizontal"
        android:gravity="fill_horizontal|center">




        <android.support.v7.widget.RecyclerView
            android:id="@+id/song_list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal" />


    </TableRow>
</TableLayout>
</LinearLayout>

这是我的自定义适配器

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>
{
private ArrayList<SongCell> data;

public MyAdapter(ArrayList<SongCell> dataI)
{
    data = dataI;
}

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

@Override
public void onBindViewHolder(ViewHolder viewholder, int pos) {
    viewholder.songName.setText(data.get(pos).getName());
    viewholder.artist.setText(data.get(pos).getArtist());
    viewholder.image.setImageBitmap(data.get(pos).getArtwork());
}

@Override
public int getItemCount() {
    return 0;
}

@Override
public int getItemViewType(int position) {
    return 0;
}

public class ViewHolder extends RecyclerView.ViewHolder
{
    TextView songName;
    TextView artist;
    ImageView image;
    ImageButton voteButton;

    public ViewHolder(View v)
    {
        super(v);
        this.songName = (TextView) v.findViewById(R.id.song_name);
        this.image = (ImageView) v.findViewById(R.id.song_photo);
        this.voteButton = (ImageButton) v.findViewById(R.id.vote_button);
    }
}

}

我已经看了很多关于如何让它工作的指南,但它仍然不起作用。有人知道发生了什么事吗?我的版本是25.0。1,并导入所有模块。但它并没有在布局中添加一张卡片。

共有1个答案

陶俊晤
2023-03-14

我想调试你上传的这么大的代码会很困难。但幸运的是,我的眼睛盯着这条线

@Override
public int getItemCount() {
    return 0;
}

返回0 在适配器中。

您的列表大小始终为0。

而是写下这个

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

编辑-1:
您还将在此处获得空指针异常

viewholder.artist.setText(data.get(pos).getArtist());

因为您没有在ViewHolder类中初始化artist变量。

编辑-2

@Override
public int getItemCount() {
    return 0;
}

您可以从适配器中删除此特定代码。因为重写我们不使用的类方法有时可能会导致您甚至无法想象的错误。

 类似资料:
  • 只是检查主活动. xml我正在做的是在按钮下方显示回收器视图并编辑文本...编辑文本的值被制成卡片,但问题是按钮不工作我不知道为什么请帮助 我是新的协调员的意见,所以请原谅我,如果我做一些新手的错误 AdapterEx.java 初始化回收器视图 主活动. xml 卡片视图. xml

  • 单击时的卡片视图正在工作。但回收器视图的区域不可单击。如何使其可点击,以便捕获卡片视图的事件。

  • 我刚开始在firebase工作。我设法上传了文本和图像,但是,我无法检索要显示在回收器视图中的图像,只能检索文本。我用的是毕加索依赖。我已经包括了我的主要活动。java类,该类负责显示从问题“我的适配器”中的firebase检索的回收器视图项。java类和模型类。我相信,在我将图像URI上载到firebase存储时,我可能犯了没有存储图像URI的错误,因此适配器无法检索图像位置。我想这可能是因为我

  • 卡片视图常用于展现一段完整独立的信息,比如一篇文章的预览图、作者信息、点赞数量等,如下是一个卡片demo示例; 使用mui-card类即可生成一个卡片容器,卡片视图主要有页眉、内容区、页脚三部分组成,结构如下: <div class="mui-card"> <!--页眉,放置标题--> <div class="mui-card-header">页眉</div> <!--内容区--

  • 我有一个recyclerview,我用itemtouchhelper类给它添加了swipe,它工作得很好,在布局中有两个视图,前台视图在bacjground层上滑动,问题是我希望前台视图在滑动后获得上一个位置,就像在三星手机中进行呼叫的滑动效果一样。我可以在刷卡后拨打notifyitemchanged来实现这一点。但我只工作了一次,如果我再次在该项上滑动,视图不会恢复,这是我的itemtouchh

  • 我正在制作一个应用程序,其中有回收器视图。但我无法在我的应用程序中看到回收器视图。当我检查Logcat时,它显示'e/recyclerview:No adapter attached;正在跳过布局‘。为什么会发生这种情况,我该如何修复? 我的主要活动代码: 我的适配器(PostAdapter.java)类代码: