MainActivity如下:
package cc.testpointtoposition;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.app.Activity;
/**
* Demo描述:
* ListView中pointToPosition()方法使用示例.
* 依据触摸点的坐标计算出点击的是ListView的哪个Item
*
* 参考资料:
* http://blog.csdn.net/guolin_blog/article/details/17357967
* Thank you very much
*/
public class MainActivity extends Activity {
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
listenListViewTouch();
}
private void init(){
mListView=(ListView) findViewById(R.id.listView);
List
> list=new ArrayList
>(); HashMap
hashMap=null; for (int i = 0; i < 8; i++) { hashMap=new HashMap
(); hashMap.put(name, 小明+i); hashMap.put(phone, 135+i); hashMap.put(amount,500+i); list.add(hashMap); } SimpleAdapter adapter=new SimpleAdapter(this, list, R.layout.listviewitem, new String []{name,phone,amount}, new int[]{R.id.name,R.id.phone,R.id.amount}); mListView.setAdapter(adapter); } private void listenListViewTouch(){ mListView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int item=mListView.pointToPosition((int) event.getX(), (int) event.getY()); System.out.println(---> 现在点击了ListView中第+(item+1)+个Item); return true; } }); } }
?
?