我有一些文本视图和一个要显示在RecyclerView顶部的按钮。我似乎做对了所有事情,但不知何故没有显示。我还检查了日志,RecyclerView应该有数据!
这不是第一次显示RecyclerViews。但是,这是我第一次显示带有一些元素的RecyclerView。
activity_home.xml-这是主主页
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/home_RL"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/top_LL"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:orientation="horizontal">
<EditText
android:id="@+id/first_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_weight="2"
android:hint="FirstName" />
<EditText
android:id="@+id/last_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_weight="2"
android:hint="LastName" />
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<Button
android:id="@+id/submit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_weight="1"
android:onClick="goButton"
android:text="GO" />
<Button
android:id="@+id/load"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
android:layout_weight="1"
android:onClick="loadButton"
android:text="L" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/nameList"
android:layout_below="@+id/top_LL"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView></RelativeLayout>
name_list_item.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/list_first_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
tools:text="first name"/>
<TextView
android:id="@+id/list_last_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
tools:text="second name"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/darker_gray" />
名称适配器
公共类NameAdapter扩展了RecyclerView.Adapter {
private List<Name> mNameList;
private Context mContext;
public NameAdapter(Context context) {
mContext = context;
}
@Override
public NameViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
View view = inflater.inflate(R.layout.name_list_item, viewGroup, false);
return new NameViewHolder(view);
}
@Override
public void onBindViewHolder(final NameViewHolder nameViewHolder, int position) {
String firstName = mNameList.get(position).getFirst();
String lastName = mNameList.get(position).getLast();
nameViewHolder.mListItemFirstName.setText(firstName);
nameViewHolder.mListItemLastName.setText(lastName);
}
@Override
public int getItemCount() {
if (mNameList == null) {
return 0;
}
return mNameList.size();
}
class NameViewHolder extends RecyclerView.ViewHolder {
TextView mListItemFirstName;
TextView mListItemLastName;
private NameViewHolder(View itemView) {
super(itemView);
mListItemFirstName = itemView.findViewById(R.id.list_first_name);
mListItemLastName = itemView.findViewById(R.id.list_last_name);
}
}
public void swapNameList(List<Name> nameList) {
if (nameList != null) {
nameList.clear();
}
mNameList = nameList;
this.notifyDataSetChanged();
}
}
更新:问题已解决 新代码应为:
public void swapNameList(List<Name> nameList) {
if (mNameList != null) {
mNameList.clear();
}
mNameList = nameList;
this.notifyDataSetChanged();
}
答案 0 :(得分:2)
问题在这里
if (nameList != null) {
nameList.clear();
}
您正在清除作为参数传递的列表。这个
public void swapNameList(List<Name> nameList) {
mNameList = nameList;
this.notifyDataSetChanged();
}
应该修复它。 (您无需清除任何内容,因为每次调用swapNameList
时都将覆盖列表)
答案 1 :(得分:1)
解决方案:这里的问题是,您正在转发该列表,并在分配给适配器之前将其清除了,因此:
代替:
map<key,AND*>
写:
unordered_map<key,AND*>
仅此而已。