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à:
Đâ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ỉ đá :)
Simplycity sẽ sử dụng thẻ mới lib từ google! dễ để thực hiện! –
@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 –
để nhìn về phía trước bạn thân! –