Java 如何硬编码7个整数位置?

Java 如何硬编码7个整数位置?,java,android,Java,Android,我正在使用此方法检索一些图像 唯一的问题是在哪里 aURL = new URL(myRemoteImages[position]); 位置是我不知道如何获得每个图像的位置,以便在我的代码中设置标记 i.setTag(mImageURLs[position]); 如您所见,myRemoteimages有7个字符串,仅此而已。我怎样才能硬编码。int位置是否只有7个位置 public void RetrieveImages() { ImageView i = new ImageVie

我正在使用此方法检索一些图像

唯一的问题是在哪里

aURL = new URL(myRemoteImages[position]);
位置是我不知道如何获得每个图像的位置,以便在我的代码中设置标记

 i.setTag(mImageURLs[position]);
如您所见,myRemoteimages有7个字符串,仅此而已。我怎样才能硬编码。int位置是否只有7个位置

public void RetrieveImages() {

    ImageView i = new ImageView(this);
    String[] mImageURLs = {
        urlImage1, urlImage2, urlImage3, urlImage4, urlImage5, urlImage6,
        urlImage7};

    String[] myRemoteImages = {
        imageUrl, imageUrl2, imageUrl3, imageUrl4,
        imageUrl5, imageUrl6, imageUrl7};

    URL aURL = null;

    try {
        aURL = new URL(myRemoteImages[position]);
    } catch (MalformedURLException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
    Log.v("ImageLoader", "Remote images set");
    i.setTag(mImageURLs[position]);                   

    URI imageUri = null;

    SharedPreferences myPrefs = getSharedPreferences("imageUri", 0);
    SharedPreferences.Editor myPrefsEdit = myPrefs.edit();

    // Setting the Uri of aURL to imageUri.
    try {
        imageUri = aURL.toURI();
        myPrefsEdit.putString("uris", imageUri.toString());
        myPrefsEdit.commit();

    } catch (URISyntaxException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}

这个问题感觉有点模棱两可,在我看来有几个答案,这取决于OP实际上在寻找什么。在这段代码中还做了一些奇怪的事情

  • 您创建的两个数组,
    mimagerls
    myRemoteImages
    ,都包含概念上相同的字符串名称。这令人困惑,并会导致维护问题。此外,由于使用的字符串似乎是实例变量,因此您应该将数组作为实例变量,从而避免了声明14个(甚至更多)字符串变量的麻烦(以及处理它们的相关维护麻烦)。声明变量名,如
    imageUrl
    imageUrl2
    imageUrl7
    通常表示问题的实现有问题-至少,如果不同的东西有不同的字符串,它们应该这样命名(
    backImage
    forwardImage
    ,等等)。除此之外,
    urimage
    imageUrl1
    “似乎”缺失的问题(由于命名方案的不同)
  • 您的代码打印堆栈跟踪;在将代码放入设备时,这可能是一个问题。你的普通消费者可能不懂java,如果它咬了他们,他们也不知道如何处理错误日志。您可能应该以某种方式记录错误,但如果您没有某种报告工具来获取日志,则可能必须禁用此功能。哦,只要说出你捕获的异常就可以了——这是标准,你已经把它们搞乱了,而且它们不能在catch块之外访问
  • 看起来可能有一些较小的方法试图从这里突破。如果不知道你想要完成什么,就很难知道这些应该包含什么

如果您知道数组中的特定索引将始终包含所需的URI(并且您只使用其中一个),那么可以继续硬编码。最好使用一个常量,然后根据需要在其他地方引用该常量:

i.setTag(mImageURLs[HOME_PAGE_IMAGE_ARRAY_INDEX]);
当然,此时(特别是在本地声明数组时…),您还可以使用实际字符串:

i.setTag(urlImage3);
这还可以节省处理阵列的成本


如果您需要遍历数组中的所有图像。。。 Java中有两种循环数组的方法:foreach循环(我不确定android是否支持该循环)和for循环的标准循环:

for(int i = 0; i < mImageURLs.length(); i++) {
    i.setTag(mImageURLs[i]);
}
for(int i=0;i

这还有一个额外的好处,即如果您总是想显示数组中的所有字符串,那么这个“自动”扩展以处理它。异常处理是属于阵列内部还是外部取决于设计,但我怀疑它可能属于这里的内部…

+1只是为了您的努力,而是询问他试图做什么。代码在某些方面没有意义;-)最后一半是我需要的。你认为我的代码有问题吗?