Android常用控件:ListView(2)

来源:互联网 发布:零售超市收银软件 编辑:程序博客网 时间:2024/05/01 01:03

效果图:


ListView中每个Item(每一行)的布局:item_listview.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="@dimen/activity_horizontal_margin" >    <ImageView        android:id="@+id/item_image"        android:layout_width="40dp"        android:layout_height="40dp"        android:src="@drawable/ic_launcher" />    <TextView        android:id="@+id/item_content"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@id/item_image"        android:text="sdfsgdfhfgdh" />    <TextView        android:gravity="center_vertical"        android:id="@+id/item_title"        android:layout_width="wrap_content"        android:layout_height="40dp"        android:layout_above="@id/item_content"        android:layout_toRightOf="@id/item_image"        android:text="ABC" /></RelativeLayout>

自定义ListView适配器:CustomAdapter.java

package com.example.csdn;import java.util.HashMap;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;/** * @author JiangYY * @date 2016年5月3日 上午10:06:36 * @description: TODO 自定义ListView适配器 */public class CustomAdapter extends BaseAdapter {private Context context;private List<HashMap<String, Object>> listItem;public CustomAdapter(Context context, List<HashMap<String, Object>> listItem) {super();this.context = context;this.listItem = listItem;}public List<HashMap<String, Object>> getListItem() {return listItem;}public void setListItem(List<HashMap<String, Object>> listItem) {this.listItem = listItem;}@Overridepublic int getCount() {return listItem == null ? 0 : listItem.size();}@Overridepublic Object getItem(int position) {return listItem.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder;if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.item_listview, parent, false);viewHolder = new ViewHolder();findById(convertView, viewHolder);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}setListViewInfo(listItem, viewHolder, position);return convertView;}private class ViewHolder {private TextView tv_title, tv_content;private ImageView iv_image;}/** * 统一findVieById *  * @param view * @param viewHolder */private void findById(View view, ViewHolder viewHolder) {viewHolder.iv_image = (ImageView) view.findViewById(R.id.item_image);viewHolder.tv_title = (TextView) view.findViewById(R.id.item_title);viewHolder.tv_content = (TextView) view.findViewById(R.id.item_content);}/** * 设置每个Item的值 *  * @param listItem *            数据源 * @param viewHolder * @param position *            Item的下标 */private void setListViewInfo(List<HashMap<String, Object>> listItem,ViewHolder viewHolder, int position) {viewHolder.iv_image.setImageResource(Integer.valueOf(listItem.get(position).get("ItemImage").toString()));viewHolder.tv_title.setText(listItem.get(position).get("ItemTitle").toString());viewHolder.tv_content.setText(listItem.get(position).get("ItemContent").toString());}}

布局文件:avtivity_main.xml

<merge xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <ListView        android:id="@+id/listview"        android:layout_width="match_parent"        android:layout_height="match_parent" >    </ListView></merge>

JAVA文件:MainActivity.java

package com.example.csdn;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;public class MainActivity extends Activity {private ListView listview;private List<HashMap<String, Object>> listItem;private CustomAdapter customAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findById();setListView();}private void findById() {listview = (ListView) findViewById(R.id.listview);}private void setListView() {setInfo();customAdapter = new CustomAdapter(this, listItem);listview.setAdapter(customAdapter);}private void setInfo() {listItem = new ArrayList<HashMap<String, Object>>();for (int i = 0; i < 10; i++) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("ItemImage", R.drawable.ic_launcher);map.put("ItemTitle", "hello");map.put("ItemContent", "hello everyone~~~");listItem.add(map);}}}
0 0