2017-08-03 29 views
0

我想在onScroll()時獲得ListView的頂部位置項的Id如何獲取onScroll上ListView頂部項目的ID?

我該如何編寫代碼?

public class Isi_Ayat extends AppCompatActivity implements AdapterView.OnItemClickListener { 
    @RequiresApi(api = Build.VERSION_CODES.KITKAT) 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.isi_ayat); 

     listview.... 

     listView.setOnScrollListener(new AbsListView.OnScrollListener() { 

      @Override 
      public void onScrollStateChanged(AbsListView view, int scrollState) { 

      } 

      @Override 
      public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
       Toast.makeText(Isi_Ayat.this, "test " + visibleItemCount, Toast.LENGTH_SHORT).show(); 

      } 

     }); 
    } 
} 
+1

您是否嘗試輸出onScroll()方法返回給您的內容?提示:有一個名爲'firstVisibleItem'的參數。 – Alessio

+0

@Alessio我試圖返回零值 –

+0

您是否嘗試輸出visibleItemCount不爲零時,作爲[評論](https://developer.android.com/reference/android/widget/AbsListView.OnScrollListener.html)說「(忽略如果visibleItemCount == 0)」?此外,也許值得同時檢查狀態,根據您的需要 – Alessio

回答

0

通過最上面的假設你指的是最上面的可見項目。

@Override 
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
    Toast.makeText(Isi_Ayat.this, "test " + visibleItemCount, Toast.LENGTH_SHORT).show(); 

    int id = ((LinearLayoutManager) listView.getLayoutManager()).findViewByPosition(firstVisibleItem).getId() 

} 

請確保LayoutManager與您用於listview的相同。因此,對於GridLayoutManager,請相應地更改它。

+0

爲什麼我的getLayoutManager是錯誤的? –

+0

@iDeaBrains,我的壞,嘗試listView.getLayoutManager()而不是lv.getLayoutManaget() – Kiya