5

Tôi đang triển khai thiết kế Thẻ tài liệu mới từ thư viện Cardslib từ Github. Liên kết thư viện: Cardslib Github Nhưng tôi không thể triển khai nhiều thẻ bên trong chế độ xem Recycler. Sẽ rất hữu ích nếu có ai đó đã triển khai thư viện Cardslib v2 mới.Thẻ tài liệu với thư viện Cardslib

Vấn đề là, các thẻ đang đến nhưng những thẻ không có hình nền và các nút tác vụ.

Cách bố trí thẻ mà tôi đang cố gắng thực hiện là:

Card Layout

Đây là mã cho RecyclerView

<it.gmariotti.cardslib.library.recyclerview.view.CardRecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingLeft="10dp" 
     android:paddingRight="10dp" 
     android:paddingTop="10dp" 
     card:list_card_layout_resourceID="@layout/native_recyclerview_card_layout" 
     android:id="@+id/card_recyclerview"/> 

Dưới đây là mã cho Hoạt động

public class AboutActivity extends ActionBarActivity { 


    final int TOTAL_CARDS = 3; 
    //private CardArrayAdapter 
    private CardArrayRecyclerViewAdapter mCardArrayAdapter; 
    private CardRecyclerView mRecyclerView; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.about_activity); 
     ArrayList<Card> cards = new ArrayList<>(); 

     mCardArrayAdapter = new CardArrayRecyclerViewAdapter(this, cards); 

     //Staggered grid view 
     CardRecyclerView mRecyclerView = (CardRecyclerView) findViewById(R.id.card_recyclerview); 
     mRecyclerView.setHasFixedSize(false); 
     mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 

     //Set the empty view 
     if (mRecyclerView != null) { 
      mRecyclerView.setAdapter(mCardArrayAdapter); 
     } 

     //Load cards 
     new LoaderAsyncTask().execute(); 
    } 

    private ArrayList<Card> initCard() { 

     ArrayList<Card> cards = new ArrayList<Card>(); 

     for (int i = 0; i < TOTAL_CARDS; i++) { 


      MaterialLargeImageCard card = new MaterialLargeImageCard(this); 
      //card.setInnerLayout(R.layout.native_material_largeimage_text_card); 
      card.setTextOverImage("Italian Beaches"); 
      card.setDrawableIdCardThumbnail(R.drawable.card_background_01); 

      //Set the title and subtitle in the card 
      card.setTitle("This is my favorite local beach"); 
      card.setSubTitle("A wonderful place"); 

      // Set supplemental actions 
      TextSupplementalAction t1 = new TextSupplementalAction(this, R.id.action1); 
      t1.setOnActionClickListener(new BaseSupplementalAction.OnActionClickListener() { 
       @Override 
       public void onClick(Card card, View view) { 
        Toast.makeText(AboutActivity.this, " Click on Text SHARE ", Toast.LENGTH_SHORT).show(); 
       } 
      }); 
      card.addSupplementalAction(t1); 

      //Set the layout for supplemental actions 
      card.setLayout_supplemental_actions_id(R.layout.about_card_supplemental_actions); 

      //Very important call: build the card 
      card.build(); 
      cards.add(card); 

     } 

     return cards; 
    } 

    private void updateAdapter(ArrayList<Card> cards) { 
     if (cards != null) { 
      mCardArrayAdapter.addAll(cards); 
     } 
    } 

    class LoaderAsyncTask extends AsyncTask<Void, Void, ArrayList<Card>> { 

     LoaderAsyncTask() { 
     } 

     @Override 
     protected ArrayList<Card> doInBackground(Void... params) { 
      //elaborate images 
      //SystemClock.sleep(1000); //delay to simulate download, don't use it in a real app 

      ArrayList<Card> cards = initCard(); 
      return cards; 

     } 

     @Override 
     protected void onPostExecute(ArrayList<Card> cards) { 
      //Update the adapter 
      updateAdapter(cards); 
      //displayList(); 
     } 
    } 
} 

CẬP NHẬT:

material_card.xml:

<it.gmariotti.cardslib.library.view.CardViewNative 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/list_cardId" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    style="@style/native_recyclerview_card.base" 
    card:card_layout_resourceID="@layout/native_material_largeimage_text_card"/> 

Trong layout xml:

<it.gmariotti.cardslib.library.recyclerview.view.CardRecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/myCardList" 
     card:list_card_layout_resourceID="@layout/material_card" /> 

Bên Đối với loop:

ArrayList<BaseSupplementalAction> actions = new ArrayList<BaseSupplementalAction>(); 

      // Set supplemental actions 
      TextSupplementalAction t1 = new TextSupplementalAction(this, R.id.action1); 
      t1.setOnActionClickListener(new BaseSupplementalAction.OnActionClickListener() { 
       @Override 
       public void onClick(Card card, View view) { 
        Toast.makeText(AboutActivity.this," Click on Text SHARE "+card.getTitle(),Toast.LENGTH_SHORT).show(); 
       } 
      }); 
      actions.add(t1); 



      //Create a Card, set the title over the image and set the thumbnail 
      MaterialLargeImageCard card = 
        MaterialLargeImageCard.with(this) 
          .setTextOverImage("Italian Beaches "+i) 
          .setTitle("This is my favorite local beach "+i) 
          .setSubTitle("A wonderful place") 
          .useDrawableId(R.drawable.card_background_01) 
          .setupSupplementalActions(R.layout.about_card_supplemental_actions, actions) 
          .build(); 

      card.setOnClickListener(new Card.OnCardClickListener() { 
       @Override 
       public void onClick(Card card, View view) { 
        Toast.makeText(AboutActivity.this," Click on ActionArea ",Toast.LENGTH_SHORT).show(); 
       } 
      }); 

      card.build(); 
      cards.add(card); 

UPDATE 2

Sau khi thực hiện một số thí nghiệm Tôi nghĩ rằng đây có thể là thủ phạm

<it.gmariotti.cardslib.library.recyclerview.view.CardRecyclerView 
     android:id="@+id/myCardList" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingTop="10dp" 
     card:list_card_layout_resourceID="@layout/material_card" /> 

đây ngay cả khi tôi đổi tên material_card đến cái gì khác nó biên dịch tốt. Tôi nghĩ rằng "thẻ: list_card_layout_resourceID =" @ layout/material_card "" bằng cách nào đó không được kích hoạt.

CẬP NHẬT 3

Cuối cùng giải quyết nó. Vấn đề là trong khai báo xml. Do nhầm lẫn, tôi đã sao chép nó sai. xmlns: thẻ = "http://schemas.android.com/apk/res-auto" là đúng một

Cảm ơn rất nhiều sự giúp đỡ @Gabriele. Thư viện này chỉ đá :)

+0

Simplycity sẽ sử dụng thẻ mới lib từ google! dễ để thực hiện! –

+0

@twntee Yaa nhưng thư viện này quá tuyệt vời để bỏ qua. Tôi đã sử dụng kể từ thời gian v1.7 –

+0

để nhìn về phía trước bạn thân! –

Trả lời

4

Bạn có thể tìm thấy một ví dụ ở đây:

https://github.com/gabrielemariotti/cardslib/blob/dev/demo/stock/src/main/java/it/gmariotti/cardslib/demo/fragment/nativeview/NativeRecyclerViewMaterialCardFragment.java

vấn đề của bạn là bố trí. RecyclerView bạn sử dụng bố trí thẻ này: thẻ: list_card_layout_resourceID = "@ layout/native_recyclerview_card_layout"

Bạn nên sử dụng một cách bố trí thẻ với material_card_layout.

Ví dụ (bố trí sử dụng trong ví dụ trên): https://github.com/gabrielemariotti/cardslib/blob/dev/demo/stock/src/main/res/layout/native_recyclerview_material_card_layout.xml

Ngoài ra tôi đề nghị bạn sử dụng xây dựng thay vì các nhà xây dựng tiêu chuẩn cho thẻ của bạn.

Chú ý. Có lỗi mà tôi đang điều tra: https://github.com/gabrielemariotti/cardslib/issues/361

+0

Tôi đã cập nhật các thay đổi nhưng vẫn không thể xem các thẻ tài liệu. Tôi chỉ có thể thấy các thẻ cơ bản. Tôi đã cập nhật các thay đổi trong các chỉnh sửa. Bất cứ điều gì tôi đang làm sai? Cảm ơn rất nhiều vì đã giúp đỡ. –

+0

Có thể thủ phạm là thẻ: list_card_layout_resourceID = "@ layout/material_card". Vui lòng xem Cập nhật 2. –

+2

Giải quyết vấn đề. Đã cập nhật bài đăng. Cảm ơn một tấn :) –

Các vấn đề liên quan