gpt4 book ai didi

java - 单击监听器上的相对布局未采用正确的 for 循环索引

转载 作者:行者123 更新时间:2023-12-02 06:38:49 25 4
gpt4 key购买 nike

我创建了一个 For 循环,它从根本上创建了一些相对布局。我有一个包含一些元素的 arrayList,称为“photosPathList”。此 arrayList 的大小用于定义最大循环数。我正在编写的这段代码位于 Android 中 Activity 的 onResume() 方法内。有件事我不明白。如果我在循环内记录 i 索引,它会正确增加,并且在每个循环中它都会取 +1 值。但是,如果我单击相对布局监听器,则 i 索引始终具有最后一个循环位置。因此,如果我创建 4 个相对布局并单击第一个,相对布局内的日志会向我显示数字 3。这是不正确的,因为它应该显示数字 0。你同意?那么我做错了什么?

for (i=0; i<= photosPathList.size()-1; i++) {

//RELATIVE LAYOUT
RelativeLayout relativeLayout = new RelativeLayout(this); //create a new relative layout
relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, //set main params about the width and height
RelativeLayout.LayoutParams.FILL_PARENT));
relativeLayout.setBackgroundColor(getResources().getColor(R.color.grayColor)); //set background color
LinearLayout.LayoutParams relativeParams = new LinearLayout.LayoutParams(
new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
relativeParams.setMargins(20, 20, 20, 0);
relativeLayout.setLayoutParams(relativeParams); //set declared params about layout to the relativeLayout
relativeLayout.requestLayout();
Log.i("index",""+i);
Log.i("current path",""+photosPathList.get(i).toString());
relativeLayout.setOnClickListener(new View.OnClickListener(){ //create a listener about the layout. When a user press a point inside the relative layout a new activity should be created
@Override
public void onClick(View v){
Intent photoDetailsActivity = new Intent(
getApplicationContext(),
PhotoDetails.class //assign the class for create a new intent
);
Log.i("index2",""+i);
photoDetailsActivity.putExtra("photoDetailsImagePath", photosPathList.get(i).toString());
photoDetailsActivity.putStringArrayListExtra("photosPathList" , photosPathList);
photoDetailsActivity.putStringArrayListExtra("formatPhotoList", formatPhotoList);
photoDetailsActivity.putStringArrayListExtra("numberCopiesPhotoList", numberCopiesPhotoList);
photoDetailsActivity.putStringArrayListExtra("pricePhotoList", pricePhotoList);
startActivity(photoDetailsActivity); //let's start the new activity
}
});
}

谢谢

最佳答案

你的“i”变量不是最终的。

这里您需要了解一些内容:

当您的 onClick 方法调用时,它不会知道在此循环期间“i”的值是什么。您需要找到一种方法将“i”传递给 onClicklistener。

我的建议是,创建一个实现 OnClickListener 并接受 int 变量的新类。将此变量保存为类成员,然后在 OnClick 方法中使用它。

希望这有帮助:)

关于java - 单击监听器上的相对布局未采用正确的 for 循环索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19358310/

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