获取膨胀视图中元素的索引位置
Get index position of element inside a inflated view
我正在尝试获取膨胀视图中微调器的索引。
虽然我成功地检索了我的 child 视图的索引,但当它在按钮上膨胀时点击如下:
itineraryDetailLL = (LinearLayout) findViewById(R.id.itineraryDetailLinearlayout);
childView = getLayoutInflater().inflate(R.layout.cardview, null);
itineraryDetailLL.addView(childView);
int posValue = itineraryDetailLL.indexOfChild(childView);
Toast.makeText ( PlanItineraryDetailView.this, Integer.toString(posValue), Toast.LENGTH_SHORT ).show();
这段代码 return 我 0
用于第一个膨胀视图,1
用于第二个膨胀视图等等...
问题
但是当我试图在我的每个 child 视图中获取微调器的索引位置(通过调用 setOnTouchListener
事件)时,return 是最后一个每个微调器的索引位置
spinnerPlanItinerary.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int indexValueTown = itineraryDetailLL.indexOfChild(childView);
Toast.makeText ( PlanItineraryDetailView.this, Integer.toString(indexValueTown), Toast.LENGTH_SHORT ).show();
return true;
}
});
这个 return 是我 1
用于我的第一个膨胀视图中的微调器,1
用于我的第二个膨胀视图中的微调器(它应该 return 0
在我的第一个膨胀视图中用于微调器,1
在我的第二个膨胀视图中用于微调器)。
我希望我清楚我的问题。
请注意,我现在只膨胀两个视图以进行测试。
张贴为答案,以便偶然发现这里的人可能会得到解决方案。
您遇到的问题是您的 itineraryDetailLL
和 childView
是全局变量。这意味着无论何时您通过单击按钮添加新项目,该值都会更新到最后一个膨胀视图。现在,无论何时触摸 Spinner
,您都会按预期获得最后一个索引。
因此将它们设置为本地变量和 final
变量可确保您在触摸微调器时引用相同的视图。
虽然我没有完全理解您的要求或您想要做的事情。可能有更好的方法来实现这一点。
我正在尝试获取膨胀视图中微调器的索引。
虽然我成功地检索了我的 child 视图的索引,但当它在按钮上膨胀时点击如下:
itineraryDetailLL = (LinearLayout) findViewById(R.id.itineraryDetailLinearlayout);
childView = getLayoutInflater().inflate(R.layout.cardview, null);
itineraryDetailLL.addView(childView);
int posValue = itineraryDetailLL.indexOfChild(childView);
Toast.makeText ( PlanItineraryDetailView.this, Integer.toString(posValue), Toast.LENGTH_SHORT ).show();
这段代码 return 我 0
用于第一个膨胀视图,1
用于第二个膨胀视图等等...
问题
但是当我试图在我的每个 child 视图中获取微调器的索引位置(通过调用 setOnTouchListener
事件)时,return 是最后一个每个微调器的索引位置
spinnerPlanItinerary.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int indexValueTown = itineraryDetailLL.indexOfChild(childView);
Toast.makeText ( PlanItineraryDetailView.this, Integer.toString(indexValueTown), Toast.LENGTH_SHORT ).show();
return true;
}
});
这个 return 是我 1
用于我的第一个膨胀视图中的微调器,1
用于我的第二个膨胀视图中的微调器(它应该 return 0
在我的第一个膨胀视图中用于微调器,1
在我的第二个膨胀视图中用于微调器)。
我希望我清楚我的问题。
请注意,我现在只膨胀两个视图以进行测试。
张贴为答案,以便偶然发现这里的人可能会得到解决方案。
您遇到的问题是您的 itineraryDetailLL
和 childView
是全局变量。这意味着无论何时您通过单击按钮添加新项目,该值都会更新到最后一个膨胀视图。现在,无论何时触摸 Spinner
,您都会按预期获得最后一个索引。
因此将它们设置为本地变量和 final
变量可确保您在触摸微调器时引用相同的视图。
虽然我没有完全理解您的要求或您想要做的事情。可能有更好的方法来实现这一点。