效果:
使用simpleAdapter实现:
内容由adapter提供,展示由listview完成:
main:
public class MainActivity extends AppCompatActivity { ListView listView; private String[] names=new String[]{"a","b","c","d"}; private String[] descs=new String[]{"a+test","b+test","c+test","d+test"}; private int[] imgs=new int[]{R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listview); listView= (ListView) findViewById(R.id.ac_listview); ArrayList<Map<String,Object>> listItems=new ArrayList<Map<String,Object>>(); for(int i=0;i<names.length;i++){ Map<String, Object> listItem=new HashMap<>(); listItem.put("header",imgs[i]); listItem.put("name",names[i]); listItem.put("desc",descs[i]); listItems.add(listItem); } SimpleAdapter simpleadapter=new SimpleAdapter(this,listItems,R.layout.simple_item, new String[]{"header","name","desc"},new int[]{R.id.header,R.id.name,R.id.desc}); listView.setAdapter(simpleadapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, names[position]+"被点击了", Toast.LENGTH_SHORT).show(); } });
xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/ac_listview" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView> </LinearLayout>
item.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:layout_width="50dp" android:layout_height="50dp" android:paddingLeft="10dp" android:id="@+id/header" /> <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="20dp" android:id="@+id/name" android:textColor="#f0f" android:paddingLeft="10dp" /> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="14dp" android:id="@+id/desc" android:paddingLeft="10dp" /> </LinearLayout> </LinearLayout>
重点在于 simpleadapter的构造函数:
第一个参数 context;
第二个参数 该参数为list<? extends Map<String,?>>类型的集合对象,每个对象生成一个列表项;
第三个参数 指定一个界面布局的ID,此处使用R.layout.simple_item(可以自己根据需要任意定制你所需要的item 非常方便);
第四个参数 是一个string[]类型的参数 该参数决定了提取map<String,?>对象中那些key对应的value来生成列表项;
第五个参数 一个int[]类型,填充那些组件;