整理::ListView的各种隔行换色法

来源:互联网 发布:手机网络控制软件 编辑:程序博客网 时间:2024/04/29 01:26

隔行换色 ListView:1.使用BaseAdapter

package com.xsjayz.listview0822;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class ListViewActivity extends Activity {private String[] moreNames = null;private ListView listView = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// 在string中定义的字符串数组moreNames = getResources().getStringArray(R.array.list_array);// 在main.xml中定义的listviewlistView = (ListView) findViewById(R.id.listViewMoreInfo);// 隐藏ListView的分隔线listView.setDivider(null);listView.setAdapter(baseAdapter);listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> view, View arg1,int position, long id) {switch (position) {case 0:toastUtil(ListViewActivity.this, position);break;case 1:toastUtil(ListViewActivity.this, position);break;case 2:toastUtil(ListViewActivity.this, position);break;case 3:toastUtil(ListViewActivity.this, position);break;case 4:toastUtil(ListViewActivity.this, position);break;case 5:toastUtil(ListViewActivity.this, position);break;case 6:toastUtil(ListViewActivity.this, position);break;}}});}/** * 由于使用了大量的Toast,所以这里将这些Toast封装成一个方法 *  * @param context * @param position */public void toastUtil(Context context, int position) {Toast.makeText(context, moreNames[position], 3000).show();}/** * 自定义BaseAdapter,返回隔行换色的视图显示在ListView上。 */BaseAdapter baseAdapter = new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ImageView imageView = null;TextView textView = null;// 获得布局文件more_info_my.xml,里面定义了TextView和ImageView两个组件convertView = LayoutInflater.from(ListViewActivity.this).inflate(R.layout.more_info_my, null);textView = (TextView) convertView.findViewById(R.id.mytxt);imageView = (ImageView) convertView.findViewById(R.id.myimage);// 设置ListView显示的文字内容和图片textView.setText(moreNames[position]);imageView.setImageResource(R.drawable.moreinfo_extend_next);// 为ListView设置隔行不同的背景颜色if (position % 2 == 0) {convertView.setBackgroundDrawable(getResources().getDrawable(R.drawable.list_item_2));} else {convertView.setBackgroundDrawable(getResources().getDrawable(R.drawable.list_item_1));}// 返回的convertView对象将作为ListView的列表项return convertView;}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic Object getItem(int position) {return null;}@Overridepublic int getCount() {return moreNames.length;}};}

隔行换色 ListView:2.重写SimpleAdapter



import java.util.HashMap;import java.util.List;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.SimpleAdapter;public class SpecialAdapter extends SimpleAdapter {    private int[] colors = new int[] { 0x30FF0000, 0x300000FF };    public SpecialAdapter(Context context, List<HashMap<String, String>> items, int resource, String[] from, int[] to) {        super(context, items, resource, from, to);    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {      View view = super.getView(position, convertView, parent);      int colorPos = position % colors.length;      view.setBackgroundColor(colors[colorPos]);      return view;    }}

Activity 引用:

SpecialAdapter adapter = new SpecialAdapter(this,fillMaps,R.layout.grid_item,from,to);