gpt4 book ai didi

Android:无论所选项目如何,与 OnItemClickListener() 一起使用的 Switch 语句始终选择最后一种情况

转载 作者:行者123 更新时间:2023-11-29 14:56:38 25 4
gpt4 key购买 nike

很难找出解决此问题的最佳方法。我要做的是一个加载了图片的图库 View ,下面是一个 TextView 。我想根据单击的图像填充 TextView 的内容。我遵循了标准 GalleryView 教程,其中创建了一个自定义的 ImageAdapter 类,它扩展了 BaseAdapter 类。为此,我为 galleryview 创建了一个 OnItemClickListener,我假设下一个合乎逻辑的步骤是创建一个 switch 语句来确定要在 TextView 中放置什么。

所以我最终发现我应该迭代画廊项目而不是传递给 onitemclicklistener() 方法的参数。现在的问题是,无论点击什么项目,输出到所需的 TextView 总是像点击最后一个项目一样。我注释掉了“案例 2”,然后它开始始终采用案例 1。即使我没有定义默认案例,是什么导致 switch 语句“默认”为最后编码的案例?

此外,我发现关于循环方面的 switch 语句存在冲突。它应该自己循环,是吗?如果是这样,我想它可能是,但由于它总是选择案例 2,我没有意识到文本的输出应该改变?我的 switch 语句是不是全乱了?我需要包含某种循环吗?我在这里做错了什么?

自定义 ImageAdapter 类:

 public class ImageAdapter extends BaseAdapter
{
private Context context;
private int itemBackground;

public ImageAdapter(Context c)
{
context = c;
//---setting the style---
TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
itemBackground = a.getResourceId(
R.styleable.Gallery1_android_galleryItemBackground, 0);
a.recycle();
}
//---returns the number of images---
public int getCount() {
return imageIDs.length;
}
//---returns the ID of an item---
public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

//---returns an ImageView view---
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(context);
imageView.setImageResource(imageIDs[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setLayoutParams(new Gallery.LayoutParams(150, 120));
imageView.setBackgroundResource(itemBackground);
return imageView;
}
}
}

这是我用来创建 galleryview 和 onitemclicklistener 的代码:

Gallery gallery = (Gallery) findViewById(R.id.top_gallery);
gallery.setAdapter(new ImageAdapter(this));
gallery.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView parent,
View v, int position, long id)
{
TextView tView = (TextView) findViewById(R.id.cat_desc);
switch(gallery.getSelectedItemPosition())
{
case 0:
tView.setText("Option1");

case 1:
tView.setText("Option2");

case 2:
tView.setText("Option3");
}
}

最佳答案

您缺少 break 的 in case 语句,代码以线性方式执行。这就是为什么总是选择最后一个。

关于Android:无论所选项目如何,与 OnItemClickListener() 一起使用的 Switch 语句始终选择最后一种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com