获取膨胀视图中元素的索引位置

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 在我的第二个膨胀视图中用于微调器)。

我希望我清楚我的问题。

请注意,我现在只膨胀两个视图以进行测试。

张贴为答案,以便偶然发现这里的人可能会得到解决方案。

您遇到的问题是您的 itineraryDetailLLchildView 是全局变量。这意味着无论何时您通过单击按钮添加新项目,该值都会更新到最后一个膨胀视图。现在,无论何时触摸 Spinner,您都会按预期获得最后一个索引。

因此将它们设置为本地变量和 final 变量可确保您在触摸微调器时引用相同的视图。

虽然我没有完全理解您的要求或您想要做的事情。可能有更好的方法来实现这一点。