Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定用户在按钮单击事件处理程序中选择的图像?_Java_Android_Arrays_If Statement_Arraylist - Fatal编程技术网

Java 如何确定用户在按钮单击事件处理程序中选择的图像?

Java 如何确定用户在按钮单击事件处理程序中选择的图像?,java,android,arrays,if-statement,arraylist,Java,Android,Arrays,If Statement,Arraylist,我不知道在我的order.setOnClickerListener的if语句中要比较什么才能使代码正常工作。我试图根据按下按钮时从数组中选择的图像设置文本 现在,当按下按钮时,我试图依次查看每个图像,以确定用户是否选择了它。但是,我不确定如何判断用户是否选择了特定的图像。我应该用什么替换**来确定这一点 public class Breakfast extends AppCompatActivity { Integer[]Foods = {R.drawable.pancakes, R.

我不知道在我的order.setOnClickerListener的if语句中要比较什么才能使代码正常工作。我试图根据按下按钮时从数组中选择的图像设置文本

现在,当按下按钮时,我试图依次查看每个图像,以确定用户是否选择了它。但是,我不确定如何判断用户是否选择了特定的图像。我应该用什么替换
**
来确定这一点

public class Breakfast extends AppCompatActivity {

    Integer[]Foods = {R.drawable.pancakes, R.drawable.frenchtoast, R.drawable.waffles,
            R.drawable.omelet};
    ImageView pic;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setLogo(R.mipmap.ic_launcher);
        getSupportActionBar().setDisplayUseLogoEnabled(true);

        setContentView(R.layout.activity_breakfast); GridView grid = (GridView) findViewById(R.id.gridView);
        final ImageView pic = (ImageView) findViewById(R.id.imgLarge);
        final TextView food = (TextView) findViewById(R.id.txtFood);
        Button back = (Button) findViewById(R.id.btnBack);
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(Breakfast.this, MainActivity.class));
            }
        });

        final Button order = (Button) findViewById(R.id.btnOrder);
        order.setEnabled(false);
        order.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(Foods[0] == ****){
                    Toast.makeText(getBaseContext(), "Pancakes added to your order", Toast.LENGTH_SHORT).show();
                    food.setText("You've selected Pankcakes");}
                if(Foods[1] == ****){
                    Toast.makeText(getBaseContext(), "French Toast added to your order", Toast.LENGTH_SHORT).show();
                    food.setText("You've selected French Toast");}
                if(Foods[2] == ****){
                    Toast.makeText(getBaseContext(), "Waffles added to your order", Toast.LENGTH_SHORT).show();
                    food.setText("You've selected Waffles");}
                if(Foods[3] == ****){
                    Toast.makeText(getBaseContext(), "Omelet added to your order", Toast.LENGTH_SHORT).show();
                    food.setText("You've selected Omelet");}

            }
        });

        grid.setAdapter(new ImageAdapter(this));
        grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                pic.setImageResource(Foods[position]);
                order.setEnabled(true);
            }
        });
    }
}
公共课堂早餐活动{
整数[]食物={R.drawable.pancakes,R.drawable.frenchtoast,R.drawable.华夫饼,
R.drawable.omelet};
图像视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_启动器);
getSupportActionBar().setDisplayUseLogoEnabled(true);
setContentView(R.layout.activity_早餐);GridView网格=(GridView)findViewById(R.id.GridView);
最终图像视图pic=(图像视图)findViewById(R.id.imgLarge);
最终TextView食物=(TextView)findViewById(R.id.txtFood);
按钮返回=(按钮)findViewById(R.id.btnBack);
back.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
startActivity(新意图(早餐、本、主活动、课程));
}
});
最终按钮顺序=(按钮)findViewById(R.id.btnOrder);
order.setEnabled(false);
order.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(食物[0]==**){
Toast.makeText(getBaseContext(),“添加到您的订单中的煎饼”,Toast.LENGTH_SHORT.show();
food.setText(“您已经选择了煎饼”);}
如果(食物[1]==**){
Toast.makeText(getBaseContext(),“添加到您的订单中的法国土司”,Toast.LENGTH_SHORT.show();
food.setText(“您选择了法式吐司”);}
如果(食物[2]==**){
Toast.makeText(getBaseContext(),“添加到您的订单中的华夫饼干”,Toast.LENGTH_SHORT.show();
food.setText(“您已经选择了华夫饼干”);}
如果(食物[3]==**){
Toast.makeText(getBaseContext(),“添加到您的订单中的煎蛋卷”,Toast.LENGTH_SHORT.show();
food.setText(“您选择了煎蛋卷”);}
}
});
setAdapter(新的ImageAdapter(this));
grid.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
pic.setImageResource(食品[位置]);
order.setEnabled(true);
}
});
}
}
还有一些代码,但我认为这与此无关。

在布局XML中使用多个(在您的情况下为4),
ImageView

<ImageView
    android:id="@+id/pancakes"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/pancakes"/>

<ImageView
    android:id="@+id/frenchtoast"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/frenchtoast"/>

<ImageView
    android:id="@+id/waffles"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/waffles"/>

<ImageView
    android:id="@+id/omelet"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/omelet"/>
这是您的
order
按钮的
OnClickListener

order.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (imageSelected == pancakes.getId()) {
                Toast.makeText(getBaseContext(), "Pancakes added to your order", Toast.LENGTH_SHORT).show();
                food.setText("You've selected Pankcakes");
            }

            if (imageSelected == frenchtoast.getId()) {
                Toast.makeText(getBaseContext(), "French Toast added to your order", Toast.LENGTH_SHORT).show();
                food.setText("You've selected French Toast");
            }

            if (imageSelected == waffles.getId()) {
                Toast.makeText(getBaseContext(), "Waffles added to your order", Toast.LENGTH_SHORT).show();
                food.setText("You've selected Waffles");            
            }

            if (imageSelected == omelet.getID()) {
                Toast.makeText(getBaseContext(), "Omelet added to your order", Toast.LENGTH_SHORT).show();
                food.setText("You've selected Omelet");             
            }
        }
    });

我认为您不希望以您尝试的方式执行此操作(即,您不希望仅用某些条件替换代码示例中的
******
,并就此结束)

这里有几个选项(网上有很多代码示例)。一种是使用a或a。这样做的好处是可以更轻松地更改以后显示的图像(与硬编码相反,硬编码需要在每次更改显示的图像时进行代码更新和重新部署)

还有一个类,但已弃用

如果您确实想要硬编码这些值,并且对以后可能导致的潜在维护和部署问题没有意见,那么可以尝试使用for each。从文档中,可以看到一个ImageButton

显示带有用户可以按下或单击的图像(而不是文本)的按钮。默认情况下,ImageButton看起来像常规按钮,其标准按钮背景在不同的按钮状态下会改变颜色。按钮表面的图像由XML元素中的android:src属性或setImageResource(int)方法定义

@lalongooo在他的回答中展示了一个代码示例,说明了如何执行类似的操作


还有一个关于创建带有复选框的ListView的教程。我还没有仔细阅读教程,但是他们试图实现的图像看起来很好,而且可能适合您的目的。您可能希望尝试实现该功能或类似功能。(我在Bing中搜索了短语“复选框列表查看android”,如果你好奇或者想找到更多关于同一主题的教程/示例,我会这样做).

事实上,你用****代替了你的实际代码,这让你很难得到帮助…对你的问题一无所知。请花时间解释你的问题。我相信如果你努力写这个问题,会有很多人愿意帮助你。我同意@JonSkeet的观点-请展示你目前在你的领域中的尝试
if
语句。另外,请详细说明你所说的“正常工作”是什么意思——它现在在做什么,你希望它做什么?另请参见:,尤其是,或者您正在询问用什么来代替
***
?所以,基本上,你是在看每个单独的图像,看看它是否是用户选择的图像?如果是这样的话,您能展示一下如何在前端(在XML中)定义图像吗?
order.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (imageSelected == pancakes.getId()) {
                Toast.makeText(getBaseContext(), "Pancakes added to your order", Toast.LENGTH_SHORT).show();
                food.setText("You've selected Pankcakes");
            }

            if (imageSelected == frenchtoast.getId()) {
                Toast.makeText(getBaseContext(), "French Toast added to your order", Toast.LENGTH_SHORT).show();
                food.setText("You've selected French Toast");
            }

            if (imageSelected == waffles.getId()) {
                Toast.makeText(getBaseContext(), "Waffles added to your order", Toast.LENGTH_SHORT).show();
                food.setText("You've selected Waffles");            
            }

            if (imageSelected == omelet.getID()) {
                Toast.makeText(getBaseContext(), "Omelet added to your order", Toast.LENGTH_SHORT).show();
                food.setText("You've selected Omelet");             
            }
        }
    });