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

时间:2017-09-12 11:00:14

标签: android ontouchlistener layout-inflater

我正在尝试获取一个在我的膨胀视图中的微调器的索引。

虽然我在成功点击一个按钮时检索了我的子视图的索引,但是点击这样:

reference.conf

这段代码会为第一个虚增视图返回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(); ,为第二个充气视图返回0,依此类推......

问题

但是当我试图在每个子视图中获取微调器的索引位置(通过调用1事件)时,它返回每个微调器的最后一个索引位置

setOnTouchListener

这会在我的第一个虚增视图中为微调器返回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; } }); ,为我的第二个虚增视图返回微调器1(在我的第一个膨胀视图中它应该返回1微调器,{{1我的第二个膨胀视图中的微调器)。

我希望我对自己的问题很清楚。

注意我现在只对两个视图进行测试。

1 个答案:

答案 0 :(得分:1)

发布回答,以便在这里绊倒的人可能会得到解决方案。

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

让他们成为本地& final变量确保您在触摸微调器时引用相同的视图。

虽然我没有理解你的要求或你想要做什么。可能有更好的方法来实现这一目标。