在我的Android应用程序中,我有一个listview,它根据用户查询显示动态数据。
问题是我需要在页脚中显示用户当前选择的项目(在滚动列表视图时)。
我已实现OnItemSelectedListener
并且可以捕获滚动位置。
我最初定义了一个全局变量并将其赋值为-1。
int selectedRowIndex = -1;
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
selectedRowIndex = arg2;
footer.setText(String.valueOf(selectedRowIndex+1)+ " of " + String.valueOf(companyList.size()));
}
问题是,当页面最初加载,甚至还没有选择任何项目(Scroll)时,selectedRowIndex值变为0(列表视图中的第一个项目)。我无法理解为什么会发生这种情况,任何人都可以提出实现这一目标的方法。
非常感谢
编辑
<RelativeLayout android:id="@+id/relativeLayout1" android:layout_height="wrap_content" android:layout_width="match_parent">
<TextView android:text="TextView"
android:id="@+id/noCompanysFound_Message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:textStyle="italic"
android:layout_marginTop="10dp">
</TextView>
<ListView android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/companylistView"
android:listSelector="@drawable/item_focus_bkg"
android:layout_above="@+id/footer_linearLayout"
android:focusable="false">
</ListView>
<LinearLayout android:id="@+id/footer_linearLayout" android:layout_height="wrap_content" android:layout_width="match_parent" android:orientation="vertical" android:layout_alignParentBottom="true" android:background="@drawable/bottom_bkg" android:gravity="center_horizontal">
<TextView android:text="Footer Text"
android:id="@+id/companylistFooterTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF">
</TextView>
</LinearLayout>
</RelativeLayout>
答案 0 :(得分:1)
我认为,只要您的活动创建了listview get Focused
和first row will be selected
,这就是为什么listview's onItemSelected()
肯定会被调用一次而且第一行列表的索引为0所以代码
selectedRowIndex = arg2; became selectedRowIndex = 0;
如果我错了,请给我建议或告诉我。