我如何将我的 HashMap 的 ID 与我的微调器值进行比较
How do i compare the ID of my HashMap to my spinner value
因此,如果您看到下面的代码,我有 3 个数组:一个存储图像,一个存储微调器的值,另一个存储 hashMap 以及我的图像值和微调器的值。
我想做的是当我按下我的按钮创建一个图像时说一个哈士奇图像显示并且当我从我的微调器中 select 哈士奇它比较两个 id,如果它们相同它会启动 if
语句中的任何代码。
点击按钮时,既可以存储选择的位置,也可以存储选择的图片id:
// As a field in your class
private int buttonHuskySelection = -1;
// In your onClick
buttonHuskySelection = images[r.nextInt(images.length)];
mImageView.setImageResource(buttonHuskySelection);
然后在onItemSelected:
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (buttonHuskySelection == images[position]) {
Log.d("TUT", "Found a match!");
}
}
请使用以下代码片段检查图像视图 ID 和散列映射键以及微调器文本和散列映射值。
public class MainActivity extends Activity {
private TextView tex_view;
private Spinner mDogs;
private ImageView mImageView;
private Button mButton;
private Random r;
private TextView mTextView;
private TextView mTextView2;
//image arrays
final Integer[] images = {R.drawable.home, R.drawable.mobile, R.drawable.sports,
R.drawable.toys};
final String[] dogs = {"Select Item", "husky", "kuvasz", "papillon", "vizsla"};
Map<Integer, String> answers = new HashMap<Integer, String>() {{
put(R.drawable.home, "husky");
put(R.drawable.mobile, "kuvasz");
put(R.drawable.sports, "papillon");
put(R.drawable.toys, "vizsla");
}};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tex_view = findViewById(R.id.tex_view);
mDogs = (Spinner) findViewById(R.id.spinner);
mImageView = (ImageView) findViewById(R.id.pic1);
mButton = (Button) findViewById(R.id.button);
ArrayAdapter<String> ad1 = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, dogs);
mDogs.setAdapter(ad1);
mDogs.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (!mDogs.getSelectedItem().toString().equalsIgnoreCase("Select Item")) {
String imageID = String.valueOf(mImageView.getTag()); // imageView id
String selectedSpinnerText = mDogs.getSelectedItem().toString(); //selected Spinner text
for (Object name : answers.keySet()) {
String key = name.toString();
String value = answers.get(name);
if (selectedSpinnerText.equalsIgnoreCase(value) && imageID.equalsIgnoreCase(key)) {
tex_view.setText("Both image and Spinner text matches");
return;
} else {
tex_view.setText("Both image and Spinner text not matches");
}
}
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
r = new Random();
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//display random images
mButton.setText("Next");
int pos = r.nextInt(images.length);
mImageView.setImageResource(images[pos]);
mImageView.setTag(images[pos]);
}
});
}
}
因此,如果您看到下面的代码,我有 3 个数组:一个存储图像,一个存储微调器的值,另一个存储 hashMap 以及我的图像值和微调器的值。
我想做的是当我按下我的按钮创建一个图像时说一个哈士奇图像显示并且当我从我的微调器中 select 哈士奇它比较两个 id,如果它们相同它会启动 if
语句中的任何代码。
点击按钮时,既可以存储选择的位置,也可以存储选择的图片id:
// As a field in your class
private int buttonHuskySelection = -1;
// In your onClick
buttonHuskySelection = images[r.nextInt(images.length)];
mImageView.setImageResource(buttonHuskySelection);
然后在onItemSelected:
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (buttonHuskySelection == images[position]) {
Log.d("TUT", "Found a match!");
}
}
请使用以下代码片段检查图像视图 ID 和散列映射键以及微调器文本和散列映射值。
public class MainActivity extends Activity {
private TextView tex_view;
private Spinner mDogs;
private ImageView mImageView;
private Button mButton;
private Random r;
private TextView mTextView;
private TextView mTextView2;
//image arrays
final Integer[] images = {R.drawable.home, R.drawable.mobile, R.drawable.sports,
R.drawable.toys};
final String[] dogs = {"Select Item", "husky", "kuvasz", "papillon", "vizsla"};
Map<Integer, String> answers = new HashMap<Integer, String>() {{
put(R.drawable.home, "husky");
put(R.drawable.mobile, "kuvasz");
put(R.drawable.sports, "papillon");
put(R.drawable.toys, "vizsla");
}};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tex_view = findViewById(R.id.tex_view);
mDogs = (Spinner) findViewById(R.id.spinner);
mImageView = (ImageView) findViewById(R.id.pic1);
mButton = (Button) findViewById(R.id.button);
ArrayAdapter<String> ad1 = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, dogs);
mDogs.setAdapter(ad1);
mDogs.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (!mDogs.getSelectedItem().toString().equalsIgnoreCase("Select Item")) {
String imageID = String.valueOf(mImageView.getTag()); // imageView id
String selectedSpinnerText = mDogs.getSelectedItem().toString(); //selected Spinner text
for (Object name : answers.keySet()) {
String key = name.toString();
String value = answers.get(name);
if (selectedSpinnerText.equalsIgnoreCase(value) && imageID.equalsIgnoreCase(key)) {
tex_view.setText("Both image and Spinner text matches");
return;
} else {
tex_view.setText("Both image and Spinner text not matches");
}
}
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
r = new Random();
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//display random images
mButton.setText("Next");
int pos = r.nextInt(images.length);
mImageView.setImageResource(images[pos]);
mImageView.setTag(images[pos]);
}
});
}
}