我正在尝试使用回收器视图来显示文本和图像。我遵循了与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语句都在那里,但我出于时间的缘故将它们遗漏了 谢谢