微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在创建卡片对象时向其添加图像,然后将其显示到android studio中的RecyclerView中?

如何解决如何在创建卡片对象时向其添加图像,然后将其显示到android studio中的RecyclerView中?

我是android编程的新手,到目前为止,我在学校只参加了一门Java课,所以我的技能很低。我必须创建一个二十一点应用程序。我无法弄清楚如何在创建卡片对象时将其分配给图像,或者以后如何分配图像。我也不知道如何在回收者视图中添加图像。适配器窗台使我感到困惑,我正在尝试使用上一个应用程序中的文本视图适配器,并对其进行修改以使用卡图像而不是文本。我在下面包括了我的代码和类。现在,与图像有关的所有事情都一团糟,因为我一直在尝试一切,但无法弄清楚。那么,如何在发卡时将图像分配给每个卡对象以及如何在回收器视图中显示这些图像?非常感谢您能给我任何帮助!

'''
package com.thaddeuskrugman.blackjack;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    // Creating java objects to link with the GUI views
    // Buttons
    private Button dealButton = (Button) findViewById(R.id.dealButton);
    private Button hitButton = (Button) findViewById(R.id.hitButton);
    private Button standButton = (Button) findViewById(R.id.standButton);
    private Button clearButton = (Button) findViewById(R.id.clearButton);
    // TextViews
    private TextView pointsTotalLabelTextView = (TextView) findViewById(R.id.pointsTotalLabelTextView);
    // RecyclerViews
    private RecyclerView computerRecyclerView = (RecyclerView) findViewById(R.id.computerRecyclerView);
    private RecyclerView playerRecyclerView = (RecyclerView) findViewById(R.id.playerRecyclerView);


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
'''
'''
package com.thaddeuskrugman.blackjack;

import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {

    private final List<String> cards;

    // Constructor
    public CardAdapter(List<String> argCards) {
        this.cards = argCards;
    }

    public ViewHolder onCreatViewHoler(ViewGroup parent,int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(
                R.layout.card_image,parent,false);

        return (new ViewHolder(view));
    }

    // READ*** This part is not finished. Im still trying to figure out how the adapter works and
    // how to use an image instead of a TextView
    public void onBindViewHolder(ViewHolder holder,int position) {
        holder.imageView.;
    }

    // READ*** Im not sure if this is right either
    public static class ViewHolder extends RecyclerView.ViewHolder {
        public final ImageView imageView;

        public ViewHolder(View itemView) {
            super(itemView);
            imageView = (ImageView) itemView.findViewById(R.id.imageView);
        }
    }
}
'''
'''
package com.thaddeuskrugman.blackjack;

        import android.media.Image;

        import java.util.Arrays;
        import java.util.List;

public class Card {

    private String faceName;
    private String suit;
    private String image;

    // READ*** This is the card constructor. I added an image but it had me change it to an int
    // READ*** Im trying to add the image to the card when the card object is created
    // READ*** This is where I am stuck and need help. Also on the deck class when the card objects
    // are created.
    public Card(String faceName,String suit,String image) {
        this.faceName = faceName;
        this.suit = suit;
        this.image = image;
    }

    public String getFaceName() {
        return faceName;
    }

    public static List<String> getValidFaceNames() {
        return Arrays.asList("2","3","4","5","6","7","8","9","10","jack","queen","king","ace");
    }

    public void setFaceName(String faceName) {
        List<String> validFaceNames = getValidFaceNames();
        faceName = faceName.toLowerCase();

        if (validFaceNames.contains(faceName)) {
            this.faceName = faceName;
        }
        else{
            throw new IllegalArgumentException("Valid face names are: " + validFaceNames);
        }
    }

    public String getSuit() {
        return suit;
    }

    public static List<String> getValidSuits(){
        return Arrays.asList("hearts","diamonds","spades","clubs");
    }

    public void setSuit(String suit) {
        List<String> validSuits = getValidSuits();
        suit = suit.toLowerCase();

        if (validSuits.contains(suit)) {
            this.suit = suit;
        }
        else{
            throw new IllegalArgumentException("Valid suits are: " + validSuits);
        }
    }

    public static String getimage() {
        return image;
    }

    public void setimage(String image) {
        this.image = image;
    }

    public String toString() {
        return String.format("%s of %s",faceName,suit);
    }
}
'''
'''
package com.thaddeuskrugman.blackjack;

import android.media.Image;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class DeckOfCards {

    private ArrayList<Card> deck;

    public DeckOfCards() {
        List<String> suits = Card.getValidSuits();

        List<String> faceNames = Card.getValidFaceNames();

        deck = new ArrayList<>();

        for (String suit:suits)
        {
            for (String facename:faceNames)
                deck.add(new Card(facename,suit,"@drawable/" + facename + "_of_" + suit)); // This is where I am stuck
            // I can enter the drawable ID of one card but I cant figure out how to have it done
            // automatically when the cards are created. It wont let me do something like
            // facename + "_of_" + suit. it wants me to pick a single card and then they would all
            // have the same image. Please tell me what I am doing wrong. Thanks!

        }
    }

}
'''

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?