问题描述
我是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 (将#修改为@)