1:layout/vlist.xml是我们的布局文件,在这里一定要对首节点加上
android:descendantFocusability="blocksDescendants" 这一属性,如果不加这一属性那么ListView就会获取不到点击事件。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:descendantFocusability="blocksDescendants" > <ImageView android:id="@+id/imgNf" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/titleNf" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textIsSelectable="true"/> </LinearLayout>
2:activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/lvList" android:layout_width="match_parent" android:layout_height="wrap_content"></ListView> </RelativeLayout>
3:MainActivity.java
public class MainActivity extends Activity { private List<Map<String,Object>>list=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv=(ListView)findViewById(R.id.lvList); lv.setAdapter(initAdapter()); //注册点击事件 lv.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { String title=list.get(arg2).get("title").toString(); Toast.makeText(MainActivity.this, title, Toast.LENGTH_SHORT).show(); } }); } public SimpleAdapter initAdapter(){ SimpleAdapter simpleAdapter=new SimpleAdapter( MainActivity.this, getData(), R.layout.vlist, new String[]{"title","img"}, new int[]{R.id.titleNf,R.id.imgNf}); return simpleAdapter; } private List<Map<String,Object>>getData(){ list=new ArrayList<Map<String,Object>>(); Map<String,Object>map=new HashMap<String,Object>(); map.put("title", "This is a test 1"); map.put("img",R.drawable.ic_launcher); list.add(map); map=new HashMap<String,Object>(); map.put("title", "This is a test 2"); map.put("img",R.drawable.ic_launcher); list.add(map); return list; } }
4:效果
点击第二行数据后: