【问题标题】:Displaying image by clicking the spinner通过单击微调器显示图像
【发布时间】:2017-04-21 15:26:06
【问题描述】:

我想单击微调器和下一页以在 android studio 中显示可绘制的图像。

这仅显示微调器

public class navigation extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_navigation);

    Spinner end = (Spinner) findViewById(R.id.end_spinner);
    //Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<CharSequence> end_adapter = ArrayAdapter.createFromResource(this, R.array.end_point, android.R.layout.simple_spinner_item);
    //Specify the layout to use when the list of choices appears
    end_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    //Apply the adapter to the spinner
    end.setAdapter(end_adapter);
    end.setOnItemSelectedListener(this);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    if (parent.getId() == R.id.end_spinner){
        if(position >=1 && position <=16){
            TextView mytext = (TextView) view;
            Toast.makeText(this,mytext.getText()+" selected",Toast.LENGTH_LONG).show();
            Intent PlanIntent = new Intent(navigation.this, AStar.class);
            Bundle bundle = new Bundle();
            bundle.putInt("classname",position);
            PlanIntent.putExtras(bundle);
            startActivity(PlanIntent);
        }
        else {
            Toast.makeText(this,"Please select the destination",Toast.LENGTH_LONG).show();
        }
    }
}

        public void onNothingSelected(AdapterView<?> parent)
        {
            Spinner start = (Spinner) findViewById(end_spinner);
            assert start != null;
            start.setOnItemSelectedListener(this);
            if (start.getId() != end_spinner) {

            }

        }
@Override
public void onBackPressed(){
    startActivity(new Intent(this,MainActivity.class));
    finish();
}
}

这是可以显示图片的下一页

公共类 AStar 扩展 AppCompatActivity {

ImageView imageView;

PhotoViewAttacher mAttacher;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_astar);

    imageView = (ImageView) findViewById(R.id.imageView);
    int position = getIntent().getIntExtra("classname", -1);
    if(position != -1){
        int classImg = classImages[position];
        imageView.setImageResource(classImg);
    }

    mAttacher = new PhotoViewAttacher(imageView);
}
}

我在微调器中有 16 个类名,我想要做的是当用户单击每个类名时,它将显示来自可绘制的图片。每个类名都有不同的图像。我的想法是使用 if else 但我不知道代码。

【问题讨论】:

    标签: java android spinner android-spinner


    【解决方案1】:

    你已经知道如何使用R.array.end_point,所以为对应的drawable创建另一个相同大小的xml数组。

    您还知道如何使用bundle.putInt("classname",position);,因此您现在需要在第二个Activity 中从intent 中获取该整数。

    有了这两个概念,你就可以在第二个Activity中的特定位置获取drawable,并相应地绘制图像

    imageView = (ImageView) findViewById(R.id.imageView);
    int position = getIntent().getIntExtra("classname", -1);
    if(position != -1){
        // TODO: get some R.array.classImages
        int classImg = classImages[position];
        imageView.setImageResource(classImg);
    }
    

    我的想法是使用 if else

    这是错误的想法。看上面。没有 else 语句,只有一个 if 语句来确保你已经获得了额外的意图。您只需要一个用于可绘制资源的整数数组

    【讨论】:

    • 是的。 if(bundle != null){ } 这里我不知道怎么写 if else 代码而已
    • 你没有任何其他陈述......不知道你为什么认为你这样做
    • int classPosition = bundle.getInt开头
    • 因为我在微调器中有 16 个类名,所以每个类名都有自己的图像显示在下一页
    • 对.... 正如我所说,没有其他声明是必要的。你得到点击项目的位置......你在一个单独的图像数组中查找位置
    猜你喜欢
    • 2012-04-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多