2017-08-03 7 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がゼロでないときは、[comment](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が同じであることを確認してください。したがって、GridLayoutManagerの場合はそれに応じて変更してください。

+0

なぜ私のgetLayoutManagerはエラーですか? –

+0

@iDeaBrains、悪いですが、lv.getLayoutManaget()の代わりにlistView.getLayoutManager()を試してみてください。 – Kiya

関連する問題