首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >像可刷卡setOnCardDismissedListener的Android Tinder

像可刷卡setOnCardDismissedListener的Android Tinder
EN

Stack Overflow用户
提问于 2014-08-13 20:53:25
回答 1查看 3.8K关注 0票数 1

我正试着做一张像火药一样的刷卡。我有一个图书馆https://github.com/kikoso/Swipeable-Cards。我跟踪了演示,它运行得很好。然而,这个演示只有一个cardModel可以被解雇。如何让适配器中的所有cardModels都工作?我想得到每一个纸牌模型的信息(例如标题,文本),在它被驳回后

代码语言:javascript
复制
private CardContainer mCardContainer;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.mainlayout);

    mCardContainer = (CardContainer) findViewById(R.id.layoutview);

    Resources r = getResources();

    SimpleCardStackAdapter adapter = new SimpleCardStackAdapter(this);

    adapter.add(new CardModel("Title1", "Description goes here", r.getDrawable(R.drawable.picture1)));
    adapter.add(new CardModel("Title2", "Description goes here", r.getDrawable(R.drawable.picture2)));
    adapter.add(new CardModel("Title3", "Description goes here", r.getDrawable(R.drawable.picture3)));
    adapter.add(new CardModel("Title4", "Description goes here", r.getDrawable(R.drawable.picture1)));
    adapter.add(new CardModel("Title5", "Description goes here", r.getDrawable(R.drawable.picture2)));
    adapter.add(new CardModel("Title6", "Description goes here", r.getDrawable(R.drawable.picture3)));
    adapter.add(new CardModel("Title1", "Description goes here", r.getDrawable(R.drawable.picture1)));

    CardModel cardModel = new CardModel("Title1", "Description goes here", r.getDrawable(R.drawable.picture1));
    String title = cardModel.getTitle();
    cardModel.setOnClickListener(new CardModel.OnClickListener() {
       @Override
       public void OnClickListener() {
           Log.i("Swipeable Cards","I am pressing the card");
       }
    });

    cardModel.setOnCardDimissedListener(new CardModel.OnCardDimissedListener() {
        @Override
        public void onLike() {
            Log.i("Swipeable Cards","I like the card");
            datasource.createComment(title);
        }

        @Override
        public void onDislike() {
            Log.i("Swipeable Cards","I dislike the card");
            datasource.deleteComment(title);
        }
    });

    adapter.add(cardModel);

    mCardContainer.setAdapter(adapter);
}

/******************更新******************/我尝试在我的cradModels上重复setOnCardDismissedListener。我想保存cardModel的标题,如果是onLike。然而,我检查了我的数据库,我保存了两次,但这两个标题都是"title2",我想知道为什么"title1“不保存。

代码语言:javascript
复制
    CardModel cardModel1 = new CardModel("Title1", "Description goes here",
            r.getDrawable(R.drawable.picture1));
    final String title1 = cardModel1.getTitle();

    CardModel cardModel2 = new CardModel("Title2", "Description goes here",
            r.getDrawable(R.drawable.picture1));
    final String title2 = cardModel2.getTitle();
    adapter.add(cardModel1);
    adapter.add(cardModel2);
    cardModel1.setOnClickListener(new CardModel.OnClickListener() {
        @Override
        public void OnClickListener() {
            Log.i("Swipeable Cards", "I am pressing the card");
        }
    });
    cardModel1
            .setOnCardDimissedListener(new CardModel.OnCardDimissedListener() {
                // onLike swipe to left, but we want it to be removed
                @Override
                public void onLike() {
                    Log.i("Swipeable Cards", "I like the card");
                    datasource.createComment(title1);
                }

                // disLike swipe to right, but we want it to be saved
                @Override
                public void onDislike() {
                    Log.i("Swipeable Cards", "I dislike the card");
                }
            });

    cardModel2.setOnClickListener(new CardModel.OnClickListener() {
        @Override
        public void OnClickListener() {
            Log.i("Swipeable Cards", "I am pressing the card");
        }
    });
    cardModel2
            .setOnCardDimissedListener(new CardModel.OnCardDimissedListener() {
                // onLike swipe to left, but we want it to be removed
                @Override
                public void onLike() {
                    Log.i("Swipeable Cards", "I like the card");
                    datasource.createComment(title2);
                }
                // disLike swipe to right, but we want it to be saved
                @Override
                public void onDislike() {
                    Log.i("Swipeable Cards", "I dislike the card");
                }
            });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-13 21:05:20

只要在你所有的卡模型上重复这个setOnCardDimissedListener

如果接口返回某种令牌,则可以为所有卡模型设置一个OnCardDimissedListener,但不幸的是,如果这样做,您将无法知道对哪一张卡进行了操作。

您将需要在您创建的每个卡片模型上设置一个不同的OnCardDimissedListener实例。

编辑-你看过github页面吗?

代码语言:javascript
复制
Additionally, you can set up a Delegate to be notified when the image is being liked or disliked: 

card.setOnCardDimissedDelegate(new CardView.OnCardDimissedDelegate() {
        @Override
        public void onLike(CardView cardView) {
            Log.d("Swipeable Card", "I liked it");
        }

        @Override
        public void onDislike(CardView cardView) {
            Log.d("Swipeable Card", "I did not liked it");
        }
    });

创建该OnCardDimissedDelegate的类实例,并在每个卡片上设置它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25295927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档