我的問題是基本上無法在RecyclerView中看到CardView的圖像。CardView的圖像沒有顯示在RecyclerView中
我會注意到,我在應用程序的其他部分使用此卡,並且不會產生任何問題 - 同樣在卡中,XML也有一些與此無關的部分,因爲它們與動畫相關點擊它。
編輯:我嘗試了相同的代碼,但在onCreateViewHolder
充氣只包含一個圖像的不同.xml文件,它完美地工作......所以,問題縮小到card_layout.xml
不顯示圖像和描述。
一般我使用的是不同的佈局管理器,但爲了簡單起見,我使用標準的LinearLayoutManager上傳了一個代碼,同時我留下了一些空的功能,因爲這個問題並不重要:
片段
public class FavoritesFragment extends Fragment {
private static final String TAG = "FavoritesFragment";
private Context mContext;
private RecyclerView mRecyclerView;
private FavoritesAdapter mFavoritesAdapter;
private ArrayList<String> testData;
public FavoritesFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View layout = inflater.inflate(R.layout.fragment_favorites, container, false);
mContext = getContext();
testData = new ArrayList<>();
testData.add("0");
testData.add("1");
testData.add("2");
testData.add("3");
testData.add("4");
initRecyclerView(layout, testData);
return layout;
}
private void initRecyclerView(View layout, ArrayList<String> testData) {
mRecyclerView = (RecyclerView)layout.findViewById(R.id.recyclerViewFavorites);
mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext));
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setAdapter(new FavoritesAdapter(testData, mContext));
mRecyclerView.addOnScrollListener(new CenterScrollListener());
}
private class FavoritesAdapter extends RecyclerView.Adapter<FavoritesAdapter.ViewHolder> {
private List<String> data;
private Context mContext;
// ViewHolder to hold the card
public class ViewHolder extends RecyclerView.ViewHolder {
private View mContainer;
private ImageView mItemImage;
private TextView mDescription;
private TextView mPrice;
private TextView mShippingDate;
public ViewHolder(View cardView) {
super(cardView);
mContainer = cardView.findViewById(R.id.card_container);
mItemImage = (ImageView)cardView.findViewById(R.id.card_item_image);
mDescription = (TextView)cardView.findViewById(R.id.card_description);
mPrice = (TextView)cardView.findViewById(R.id.card_description);
mShippingDate = (TextView)cardView.findViewById(R.id.card_shipping);
}
}
public FavoritesAdapter(List<String> data, Context context) {
mContext = context;
this.data = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.card_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return data.size();
}
}
}
fragment_favorites.xml
<FrameLayout 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"
tools:context="com.panasonixx.asosplus.FavoritesFragment">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerViewFavorites"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true" />
</FrameLayout>
card_layout.xml
<android.support.v7.widget.CardView xmlns:cardview="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/card_container"
cardview:cardCornerRadius="2dp"
cardview:cardElevation="4dp"
cardview:cardUseCompatPadding="true">
<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentBottom="false"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="false"
android:layout_alignParentStart="false"
android:layout_above="@+id/card_description">
<LinearLayout
android:id="@+id/linearView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@android:color/holo_purple"
android:gravity="center_vertical"
android:orientation="vertical"
android:visibility="gone">
<LinearLayout
android:id="@+id/layoutButtons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
android:visibility="gone">
<Button
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:text="@string/card_reveal_buy" />
<Button
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:text="@string/card_reveal_share" />
<Button
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/card_reveal_favorite" />
</LinearLayout>
</LinearLayout>
<ImageView
android:id="@+id/card_item_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:contentDescription="@string/image"
android:src="@drawable/test_image"
android:scaleType="centerCrop"
android:layout_gravity="center_horizontal|top" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/price"
android:id="@+id/card_price"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_margin="2dp" />
<TextView
android:layout_width="80dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/shipping"
android:id="@+id/card_shipping"
android:textAlignment="viewEnd"
android:layout_alignTop="@+id/card_price"
android:layout_alignParentEnd="true"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/desc"
android:id="@+id/card_description"
android:textAlignment="center"
android:layout_above="@+id/card_price"
android:layout_alignParentStart="true"
android:layout_alignEnd="@+id/card_shipping"
android:layout_marginBottom="8dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/card_image_description"
android:id="@+id/card_shipping_icon"
android:src="@drawable/ic_local_shipping"
android:layout_alignTop="@+id/card_shipping"
android:layout_toStartOf="@+id/card_shipping" />
</RelativeLayout>
</android.support.v7.widget.CardView>
我直接膨脹了card_layout.xml - 我沒有使用任何數據,你是對的,它會這樣,但現在我只想看到它顯示 – bluesummers
然後在你的假數據定義整數並添加' R.drawable.yourdrawable' –
這是必要的,即使我膨脹了一個已經定義了圖像的src的XML? – bluesummers