ListView item에 대한 이벤트 수신 추가

5260 단어

1. 이벤트 클릭(OnItemClickListener)

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

  parent: 공식 설명: The AdapterView where the click happened, 즉 사용자가 클릭한 AdapterView로 이 매개 변수는 일반적으로 사용하지 않습니다.
 view: 현재 클릭한 목록 항목에 대응하는 레이아웃 View 대상은 이 파라미터를 통해 해당하는 목록 항목 내부의 구성 요소를 얻어 조작할 수 있습니다.예를 들어ListView가 네 개의 목록 항목을 포함하고 두 번째 항목을 눌렀다고 가정하면view를 통해 두 번째 목록 항목에 있는 TextView,ImageView 등의 구성 요소를 조작할 수 있다.
  position: 현재 클릭한 목록 항목의 위치는 0부터, 즉 n번째를 클릭하면 n-1입니다.
  id: 현재 클릭한 목록 항목의 번호도 0에서 시작합니다. 일반적으로position과 id는 같습니다.
public class MainActivity extends Activity implements AdapterView.OnItemClickListener{

    private ListView myListView;
    private SimpleAdapter simpleAdapter;
    private List> data;

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

        data = new ArrayList>();
        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> getData() {
        for (int i = 0; i < 20; i++) {
            Mapmap = new HashMap();
            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. 이벤트 스크롤

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

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

        data = new ArrayList>();
        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> getData() {
        for (int i = 0; i < 20; i++) {
            Mapmap = new HashMap();
            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();
    }
}

좋은 웹페이지 즐겨찾기