中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ListView如何添加item的事件監聽

發布時間:2021-08-05 13:49:33 來源:億速云 閱讀:195 作者:小新 欄目:移動開發

這篇文章主要介紹ListView如何添加item的事件監聽,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

1. 點擊事件(OnItemClickListener)

onItemClick(AdapterView<?> parent, View view, int position, long id)

parent:官方解釋為:The AdapterView where the click happened,也就是用戶所點擊的AdapterView,這個參數一般不用。

view:當前點擊的列表項所對應的布局View對象,可通過這個參數獲得相應的列表項內部的組件,進而對其進行操作。舉個例子,假設有一個ListView,含有4個列表項,你點了第2個,那么通過view你就可以操作第2個列表項里面的TextView、ImageView等等的組件(假設存在)。

position:當前點擊的列表項的位置,從0開始,也就是點擊第n個,position就是n-1。

id:當前點擊的列表項的序號,也是從0開始,所以大部分時候position和id是一樣的,至于這兩個參數之間有什么不同,有興趣的童鞋可以深究一下。

public class MainActivity extends Activity implements AdapterView.OnItemClickListener{

  private ListView myListView;
  private SimpleAdapter simpleAdapter;
  private List<Map<String, Object>> data;

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

    data = new ArrayList<Map<String, Object>>();
    simpleAdapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"img", "text"}, new int[]{R.id.img, R.id.text});
    myListView = (ListView) findViewById(R.id.myListView);
    //設置監聽器
    myListView.setAdapter(simpleAdapter);
    myListView.setOnItemClickListener(this);
  }

  private List<Map<String, Object>> getData() {
    for (int i = 0; i < 20; i++) {
      Map<String, Object>map = new HashMap<String, Object>();
      map.put("img", R.mipmap.ic_launcher);
      map.put("text", "初始simpleAdapter"+(i+1));
      data.add(map);
    }

    return data;
  }

  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    //通過view獲取其內部的組件,進而進行操作
    String text = (String) ((TextView)view.findViewById(R.id.text)).getText();
    //大多數情況下,position和id相同,并且都從0開始
    String showText = "點擊第" + position + "項,文本內容為:" + text + ",ID為:" + id;
    Toast.makeText(this, showText, Toast.LENGTH_LONG).show();
  }
}

2. 滾動事件(OnScrollListener)

void onScrollStateChanged(AbsListView view, int scrollState)

監聽滾動狀態的變化。

view:正在被滾動的視圖,也就是當前的ListView。

scrollState:滾動狀態,分別有以下幾種:

SCROLL_STATE_TOUCH_SCROLL:滑動狀態,手指在視圖滑動,并且手指一直停留在屏幕上而未離開。

SCROLL_STATE_FLING:投擲狀態,手指在離開視圖前,用力劃了一下(想象將視圖投擲出去的感覺),視圖會按照慣性滑動至停止。

SCROLL_STATE_IDLE:閑置狀態,什么都沒做的狀態。當投擲狀態或觸摸滾動狀態結束時,進入閑置狀態。

void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)

監聽非滾動狀態,只要ListView不滾動,就會被不斷調用。

view:正在被滾動的視圖,也就是當前的ListView。

firstVisibleItem:已加載的第一個列表項的索引值。

visibleItemCount:已加載的列表項的總數。

totalItemCount:適配器中數據源對應的列表項總數。

public class MainActivity extends Activity implements AbsListView.OnScrollListener{

  private ListView myListView;
  private SimpleAdapter simpleAdapter;
  private List<Map<String, Object>> data;

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

    data = new ArrayList<Map<String, Object>>();
    simpleAdapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"img", "text"}, new int[]{R.id.img, R.id.text});
    myListView = (ListView) findViewById(R.id.myListView);
    myListView.setAdapter(simpleAdapter);

    //設置監聽器
    myListView.setOnScrollListener(this);
  }

  private List<Map<String, Object>> getData() {
    for (int i = 0; i < 20; i++) {
      Map<String, Object>map = new HashMap<String, Object>();
      map.put("img", R.mipmap.ic_launcher);
      map.put("text", "初始simpleAdapter"+(i+1));
      data.add(map);
    }

    return data;
  }

  @Override
  public void onScrollStateChanged(AbsListView view, int scrollState) {
    switch (scrollState) {
      //投擲狀態
      case SCROLL_STATE_FLING:
        Toast.makeText(this, "SCROLL_STATE_FLING", Toast.LENGTH_SHORT).show();
        break;
      //閑置狀態
      case SCROLL_STATE_IDLE:
        Toast.makeText(this, "SCROLL_STATE_IDLE", Toast.LENGTH_SHORT).show();
        break;
      //滑動狀態
      case SCROLL_STATE_TOUCH_SCROLL:
        Toast.makeText(this, "SCROLL_STATE_TOUCH_SCROLL", Toast.LENGTH_SHORT).show();
        break;
    }
  }

  @Override
  public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
//    Toast.makeText(this, "滾動已停止,已加載的第一項的索引為:" + firstVisibleItem +
//            ",已加載的列表項總數為:" + visibleItemCount + ",存在的列表項總數為:" +
//            totalItemCount, Toast.LENGTH_LONG).show();
  }
}

以上是“ListView如何添加item的事件監聽”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

诏安县| 古蔺县| 法库县| 宜君县| 扶余县| 南投市| 淮滨县| 凤山县| 福泉市| 丰城市| 绵阳市| 益阳市| 平潭县| 哈巴河县| 新和县| 巴里| 锡林浩特市| 太原市| 佛山市| 阳泉市| 沭阳县| 浠水县| 尉犁县| 石景山区| 浮梁县| 贵州省| 嫩江县| 嵊州市| 南陵县| 吉水县| 吉林市| 榆树市| 阿拉善右旗| 康平县| 西贡区| 会理县| 凭祥市| 宜黄县| 秦皇岛市| 哈巴河县| 西充县|