5

Yeni Materyal Kartı tasarımını Github'dan Cardslib kütüphanesinden yapıyorum. Kütüphane Bağlantısı: Cardslib Github Ancak, Recycler görünümünde birden fazla kart uygulayamıyorum. Yeni Cardlib v2 kütüphanesini zaten uygulamış olsaydı gerçekten yararlı olurdu.Cardslib kitaplığına sahip Malzeme Kartı

Sorun şu ki, kartlar geliyor ama arka plan görüntüsü ve eylem düğmeleri yok.

Ben uygulamak çalışıyorum Kart düzenidir: Burada

Card Layout

Faaliyet

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(); 
     } 
    } 
} 
için kod İşte 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"/> 

için kod olmasıdır

UPDATE:

material_card.xml: düzen xml olarak

<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"/> 

:

döngü için İçinde
<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" /> 

:

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); 

GÜNCELLEME 2

bazı deneyler yaptıktan sonra bu başka bir şey gayet derler için material_card adlandırmak bile suçlu İşte

<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" /> 

olabileceğini düşünüyorum. Sanırım "card: list_card_layout_resourceID =" @ layout/material_card "" bir şekilde tetiklenmiyor. 3

GÜNCELLEME Nihayet onu çözdü. Sorun xml beyanındaydı. Yanlışlıkla yanlış kopyaladım. xmlns: card = "http://schemas.android.com/apk/res-auto" doğru bir

Yardım için çok teşekkürler @Gabriele. Bu kütüphane sadece :)

+0

Simplycity, google! uygulanması kolay! –

+0

@twntee Yaa ama bu kütüphane görmezden gelmek için çok havalı. Ben v1.7 –

+0

zamandan beri dostum bakmak için kullanıyorum! –

cevap

4

Burada bir örnek bulabilirsiniz rocks:

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

Sorununuz düzenidir. Sizin RecyclerView bu kart düzeni kullanın: kart: list_card_layout_resourceID = "@ düzen/native_recyclerview_card_layout"

Sen material_card_layout bir kart düzeni kullanmalıdır.

Örnek (yukarıdaki örnekte kullanılan düzeni): https://github.com/gabrielemariotti/cardslib/blob/dev/demo/stock/src/main/res/layout/native_recyclerview_material_card_layout.xml

Ayrıca ben oluşturucu yerine kartınız için standart kurucuyu kullanarak öneriyoruz.

Dikkat edin. Üzerinde araştırma yaptığım bir hata var: https://github.com/gabrielemariotti/cardslib/issues/361

+0

Değişiklikleri güncelledim ancak yine de malzeme kartlarını göremiyorum. Sadece temel kartları görebiliyorum. Değişikliklerdeki değişiklikleri güncelledim. Yanlış yaptığım bir şey var mı? Yardım için çok teşekkürler. –

+0

Belki de suçlu karttır: list_card_layout_resourceID = "@ layout/material_card". Lütfen Güncelleştirme 2'ye bir göz atın. –

+2

Sorunu çözdünüz. Gönderi güncellendi. Teşekkürler bir ton :) –