5

GithubのCardslibライブラリから新しいMaterial Cardデザインを実装しています。ライブラリリンク:Cardslib Github しかし、私はRecyclerビュー内に複数のカードを実装することができません。既に誰かが新しいCardslib v2ライブラリを実装していれば、本当に役に立ちます。Cardslibライブラリ付き素材カード

カードには問題はありませんが、カードには背景画像とアクションボタンがありません。

私が実装しようとしているカードのレイアウトは次のとおりです。

Card Layout

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

のコードが活動

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(); 
     } 
    } 
} 
ためのコードです

更新日:

material_card.xml:レイアウト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"/> 

Forループ内部
<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); 

UPDATE 2

私はこれは私はそれがうまくコンパイル何か他のものにmaterial_cardの名前を変更しても犯人

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

かもしれないと考えていますいくつかの実験を行った後

。私は "card:list_card_layout_resourceID =" @ layout/material_card ""は何とかトリガーされていないと思います。 3

UPDATEが最後にそれを解決しました。問題はxml宣言にありました。間違って私は間違ってそれをコピーしました。 xmlns:card = "http://schemas.android.com/apk/res-auto"は正しいものです

ありがとうございますhelp @Gabriele。

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

あなたの問題はレイアウトです:このライブラリは、ちょうどあなたがここに例を見つけることができます:)

+0

SimplyCityはgoogleから新しいカードのlibを使用しています!実装が簡単です! –

+0

@twntee Yaaしかし、このライブラリは無視するにはあまりにも冷たいです。私はv1.7以来使用している –

+0

先を見て時間! –

答えて

4

岩。 あなたRecyclerViewこのカードレイアウトを使用します。 カード:list_card_layout_resourceID = "@レイアウト/ native_recyclerview_card_layout"

あなたはmaterial_card_layoutとカードレイアウトを使用する必要があります。

例(上記の例で使用したレイアウト): https://github.com/gabrielemariotti/cardslib/blob/dev/demo/stock/src/main/res/layout/native_recyclerview_material_card_layout.xml

はまた、私はあなたがビルダーの代わりに、あなたのカードのための標準的なコンストラクタを使用してお勧めします。

ご注意ください。 私が調査しているバグがあります: https://github.com/gabrielemariotti/cardslib/issues/361

+0

私は変更を更新しましたが、依然としてマテリアルカードを見ることができません。私は基本的なカードしか見ることができません。私は編集の変更を更新しました。私が間違っていることは何ですか?助けてくれてありがとう。 –

+0

多分、犯人はcard:list_card_layout_resourceID = "@ layout/material_card"です。アップデート2をご覧ください。 –

+2

問題を解決しました。投稿を更新しました。おかげでトン:) –

関連する問題