欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ListView-添加item的事件監(jiān)聽(tīng)實(shí)例

 更新時(shí)間:2017年07月03日 14:44:18   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇ListView-添加item的事件監(jiān)聽(tīng)實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1. 點(diǎn)擊事件(OnItemClickListener)

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

parent:官方解釋為:The AdapterView where the click happened,也就是用戶(hù)所點(diǎn)擊的AdapterView,這個(gè)參數(shù)一般不用。

view:當(dāng)前點(diǎn)擊的列表項(xiàng)所對(duì)應(yīng)的布局View對(duì)象,可通過(guò)這個(gè)參數(shù)獲得相應(yīng)的列表項(xiàng)內(nèi)部的組件,進(jìn)而對(duì)其進(jìn)行操作。舉個(gè)例子,假設(shè)有一個(gè)ListView,含有4個(gè)列表項(xiàng),你點(diǎn)了第2個(gè),那么通過(guò)view你就可以操作第2個(gè)列表項(xiàng)里面的TextView、ImageView等等的組件(假設(shè)存在)。

position:當(dāng)前點(diǎn)擊的列表項(xiàng)的位置,從0開(kāi)始,也就是點(diǎn)擊第n個(gè),position就是n-1。

id:當(dāng)前點(diǎn)擊的列表項(xiàng)的序號(hào),也是從0開(kāi)始,所以大部分時(shí)候position和id是一樣的,至于這兩個(gè)參數(shù)之間有什么不同,有興趣的童鞋可以深究一下。

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);
    //設(shè)置監(jiān)聽(tīng)器
    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) {
    //通過(guò)view獲取其內(nèi)部的組件,進(jìn)而進(jìn)行操作
    String text = (String) ((TextView)view.findViewById(R.id.text)).getText();
    //大多數(shù)情況下,position和id相同,并且都從0開(kāi)始
    String showText = "點(diǎn)擊第" + position + "項(xiàng),文本內(nèi)容為:" + text + ",ID為:" + id;
    Toast.makeText(this, showText, Toast.LENGTH_LONG).show();
  }
}

2. 滾動(dòng)事件(OnScrollListener)

void onScrollStateChanged(AbsListView view, int scrollState)

監(jiān)聽(tīng)滾動(dòng)狀態(tài)的變化。

view:正在被滾動(dòng)的視圖,也就是當(dāng)前的ListView。

scrollState:滾動(dòng)狀態(tài),分別有以下幾種:

SCROLL_STATE_TOUCH_SCROLL:滑動(dòng)狀態(tài),手指在視圖滑動(dòng),并且手指一直停留在屏幕上而未離開(kāi)。

SCROLL_STATE_FLING:投擲狀態(tài),手指在離開(kāi)視圖前,用力劃了一下(想象將視圖投擲出去的感覺(jué)),視圖會(huì)按照慣性滑動(dòng)至停止。

SCROLL_STATE_IDLE:閑置狀態(tài),什么都沒(méi)做的狀態(tài)。當(dāng)投擲狀態(tài)或觸摸滾動(dòng)狀態(tài)結(jié)束時(shí),進(jìn)入閑置狀態(tài)。

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

監(jiān)聽(tīng)非滾動(dòng)狀態(tài),只要ListView不滾動(dòng),就會(huì)被不斷調(diào)用。

view:正在被滾動(dòng)的視圖,也就是當(dāng)前的ListView。

firstVisibleItem:已加載的第一個(gè)列表項(xiàng)的索引值。

visibleItemCount:已加載的列表項(xiàng)的總數(shù)。

totalItemCount:適配器中數(shù)據(jù)源對(duì)應(yīng)的列表項(xiàng)總數(shù)。

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);

    //設(shè)置監(jiān)聽(tīng)器
    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) {
      //投擲狀態(tài)
      case SCROLL_STATE_FLING:
        Toast.makeText(this, "SCROLL_STATE_FLING", Toast.LENGTH_SHORT).show();
        break;
      //閑置狀態(tài)
      case SCROLL_STATE_IDLE:
        Toast.makeText(this, "SCROLL_STATE_IDLE", Toast.LENGTH_SHORT).show();
        break;
      //滑動(dòng)狀態(tài)
      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, "滾動(dòng)已停止,已加載的第一項(xiàng)的索引為:" + firstVisibleItem +
//            ",已加載的列表項(xiàng)總數(shù)為:" + visibleItemCount + ",存在的列表項(xiàng)總數(shù)為:" +
//            totalItemCount, Toast.LENGTH_LONG).show();
  }
}

以上這篇ListView-添加item的事件監(jiān)聽(tīng)實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論