Recycler View显示空卡Android

时间:2018-05-02 02:48:54

标签: java android

我正在尝试使用回收器视图来显示文本和图像。我遵循了与HFAD第二版相似的说明,我已经运行了我的应用程序。不幸的是,当活动启动时,我有我的回收者视图,所有卡都显示为空。我已经运行了调试器,看到适配器似乎将正确的图像和文本绑定到卡布局,所以我不知道出了什么问题。我将在下面发布相关代码。非常感谢任何见解。

card_image.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:layout_margin="5dp"
    app:cardElevation="2dp"
    app:cardCornerRadius="7dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/day_text"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" />

        <ImageView
            android:id="@+id/info_image"
            android:layout_width="50dp"
            android:layout_height="50dp" />

    </LinearLayout>

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

activity_habit_detail.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:gravity="center_horizontal"
tools:context=".HabitDetailActivity">

<include
    layout="@layout/toolbar_main"
    android:id="@+id/toolbar" />

<fragment
    android:name="com.beetboxgames.kaizenassistant.HabitDetailFragment"
    android:id="@+id/detail_fragment"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
</LinearLayout>

task_detail_fragment.xml

<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/task_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"/>

TaskCardAdapter.java

public class TaskCardAdapter extends RecyclerView.Adapter<TaskCardAdapter.ViewHolder>{

private String[] days;
private int[] imageIds;

public TaskCardAdapter(String[] days, int[] imageIds) {
    this.days = days;
    this.imageIds = imageIds;
}

@Override
public int getItemCount() {
    return days.length;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    CardView cv = (CardView) LayoutInflater.from(parent.getContext()).inflate(R.layout.card_image, parent, false);
    return new ViewHolder(cv);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    CardView cardView = holder.cardView;
    ImageView imageView = (ImageView) cardView.findViewById(R.id.info_image);
    Drawable drawable = ContextCompat.getDrawable(cardView.getContext(), imageIds[position]);
    imageView.setImageDrawable(drawable);
    imageView.setContentDescription(days[position]);
    TextView textView = (TextView) cardView.findViewById(R.id.day_text);
    textView.setText(days[position]);
}

public static class ViewHolder extends RecyclerView.ViewHolder {
    //define the view to be used for each data item

    private CardView cardView;

    public ViewHolder(CardView v) {
        super(v);
        cardView = v;
    }
}

}

HabitDetailActivity.java

public class HabitDetailActivity extends AppCompatActivity implements HabitDetailFragment.Listener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    int _habitId = (int) getIntent().getExtras().get(IdList.GENERIC_HABIT_KEY);
    setHabit(_habitId);
    filename = setFilename(habitId);
    loadHabitDetailHelperFromFile(filename);
    habitDetailHelper.setStaticTaskCardArrays();

    setContentView(R.layout.activity_habit_detail);
    //set the toolbar
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);

}

public void setHabit(int habitId) {
    this.habitId = habitId;
}

TaskCard.java

public class TaskCard {

private int day;
private int imageResourceId;

public static TaskCard[] taskCards = new TaskCard[15];

public int getImageResourceId() {
    return imageResourceId;
}

private HabitDetailHelper.TASK_STATUS task_status;

public int getDay() {
    return day;
}

public void setDay(int day) {
    this.day = day;
}

public HabitDetailHelper.TASK_STATUS getTask_status() {
    return task_status;
}

public void setTaskStatus(HabitDetailHelper.TASK_STATUS task_status) {
    this.task_status = task_status;
}

public TaskCard(int day, HabitDetailHelper.TASK_STATUS task_status) {
    this.day = day;
    this.task_status = task_status;
    setImageResourceId(task_status);
}

public void setImageResourceId(HabitDetailHelper.TASK_STATUS task_status) {
    switch (task_status) {
        case UNLOCKED: imageResourceId = R.drawable.open_lock; break;
        case LOCKED: imageResourceId = R.drawable.lock; break;
        case COMPLETE: imageResourceId = R.drawable.check_mark; break;
        default: imageResourceId = R.drawable.lock; break;
    }
}}

很抱歉其中一些格式化。我无法正确显示它。此外,所有java文件所需的import语句都在那里,但我出于时间的缘故将它们遗漏了 谢谢

0 个答案:

没有答案