Android listview, текущий счетчик элементов - PullRequest
0 голосов
/ 17 октября 2011

В моем приложении для Android у меня есть просмотр списка, который отображает динамические данные в соответствии с запросом пользователя.

Проблема в том, что мне нужно отобразить в нижнем колонтитуле, какой элемент пользователь выбрал в данный момент (при прокрутке списка).

Я реализовал 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> 

1 Ответ

1 голос
/ 17 октября 2011

Я думаю, что когда бы ваша деятельность ни создавала ваши listview get Focused и first row will be selected, именно поэтому listview's onItemSelected() будет обязательно вызываться один раз, а индекс первой строки списка равен 0, поэтому в коде

selectedRowIndex = arg2; became selectedRowIndex = 0;  

Если я не прав, дайте мне предложение или дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...