java - 如何重置卡牌堆或获取上一张卡?

标签 java android xml android-layout android-fragments

因此,我按照本教程 ( https://www.youtube.com/watch?v=cS5l_hPwC10 ) 学习如何制作卡片堆栈,即使同时使用 2 个卡片堆栈,它也能正常工作。现在我想添加一个按钮,以便我可以重置两个堆栈和/或一个按钮以访问上一张卡

这是我与卡片堆栈相关的所有代码。告诉我您是否需要更多,因为这是我第一次尝试编程

hauptanwendung_fragment.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:gravity="center"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".FragmentHauptanwendung">

    <com.wenchao.cardstack.CardStack
        android:id="@+id/card_stack"
        android:layout_width="280dp"
        android:layout_height="170dp"
        android:clipChildren="false"
        android:clipToPadding="false" />

    <com.wenchao.cardstack.CardStack
        android:id="@+id/card_stack2"
        android:layout_width="280dp"
        android:layout_height="170dp"
        android:clipChildren="false"
        android:clipToPadding="false" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageButton
            android:id="@+id/stern"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@null"
            app:srcCompat="@drawable/ic_stern02" />
        <Space
            android:layout_width="50sp"
            android:layout_height="match_parent"
            android:layout_marginRight="15sp"
            android:layout_weight="1" />

        <ImageButton
            android:id="@+id/stift"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@null"
            app:srcCompat="@drawable/ic_bearbeiten01" />
    </LinearLayout>


</LinearLayout>

card_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/image_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="center" />

</LinearLayout>

card_layout2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/image_content2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="center" />

</LinearLayout>

FragmentHauptanwendung.java

package com.example.ideenfinder3;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.wenchao.cardstack.CardStack;

import java.util.Objects;

public class FragmentHauptanwendung extends Fragment implements CardStack.CardEventListener {
    View view;

    private CardsDataAdapter card_adapter;
    private CardsDataAdapter2 card_adapter2;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.hauptanwendung_fragment, container, false);


        initImages();
        initImages2();

        CardStack card_stack = (CardStack) view.findViewById(R.id.card_stack);
        card_stack.setContentResource(R.layout.card_layout);
        card_stack.setStackMargin(20);
        card_stack.setAdapter(card_adapter);
        card_stack.setListener(this);


        CardStack card_stack2 = (CardStack) view.findViewById(R.id.card_stack2);
        card_stack2.setContentResource(R.layout.card_layout2);
        card_stack2.setStackMargin(20);
        card_stack2.setAdapter(card_adapter2);
        card_stack2.setListener(this);

        return view;
    }

    private void initImages2() {
        card_adapter2 = new CardsDataAdapter2(Objects.requireNonNull(getActivity()).getApplicationContext(),0);
        card_adapter2.add(R.drawable.logo);
        card_adapter2.add(R.drawable.schriftzug);
    }


    private void initImages() {
        card_adapter = new CardsDataAdapter(Objects.requireNonNull(getActivity()).getApplicationContext(),0);
        card_adapter.add(R.drawable.bild01);
        card_adapter.add(R.drawable.bild02);
        card_adapter.add(R.drawable.bild03);
        card_adapter.add(R.drawable.bild04);
        card_adapter.add(R.drawable.bild05);

    }

    @Override
    public boolean swipeEnd(int i, float v) {
        return v > 300;
    }

    @Override
    public boolean swipeStart(int i, float v) {
        return false;
    }

    @Override
    public boolean swipeContinue(int i, float v, float v1) {
        return false;
    }

    @Override
    public void discarded(int i, int i1) {

    }

    @Override
    public void topCardTapped() {

    }
}

卡片数据适配器

package com.example.ideenfinder3;


import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;


public class CardsDataAdapter extends ArrayAdapter<Integer> {


    public CardsDataAdapter(Context context, int resource) {
        super(context, resource);
    }



    @Override
    public View getView(int position, final View ImgcontentView, ViewGroup parent){
        ImageView ImgV = (ImageView) (ImgcontentView.findViewById(R.id.image_content));
        ImgV.setImageResource(getItem(position));
        return ImgcontentView;
    }

}

卡片数据适配器2

package com.example.ideenfinder3;

import android.content.Context;
import android.support.annotation.NonNull;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;

public class CardsDataAdapter2 extends ArrayAdapter<Integer> {


    public CardsDataAdapter2(@NonNull Context context, int resource) {
        super(context, resource);
    }

    @Override
    public View getView(int position, final View ImgcontentView2, ViewGroup parent){
        ImageView ImgV2 = (ImageView) (ImgcontentView2.findViewById(R.id.image_content2));
        ImgV2.setImageResource(getItem(position));
        return ImgcontentView2;
    }
}

最佳答案

只需保留 CardStack 的句柄即可:

private CardStack cardStack01;
private CardStack cardStack02;

并让 Fragment 为这些实现 getter 和 setter。

关于java - 如何重置卡牌堆或获取上一张卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58040024/

相关文章:

java:带有getName() 方法的标准接口(interface)?

Android 应用程序不会在 bluestack 中启动

android - Mac OS下使用Docker运行android模拟器x86

java - 24 小时倒计时器,具有小时、分钟、秒三个独立的 TextView

java - 生成 Checkstyle 报告(带有扩展检查)

java - Hibernate 4.3(使用 Netbeans 的 JavaServer Faces)返回零行的表

java - 使用 Java gcm-server 向主题发送消息

javascript - 如何使用 JavaScript 迭代 XML 文件并在 HTML 网页中显示数据?

c# - namespace 不是其父 namespace 的 XML 属性被反序列化为 null

xml - xhtml 文档 - Lang 选项问题