隔行換色的Android ListView:使用BaseAdapter

openkk 12年前發布 | 9K 次閱讀 網絡開發

隔行換色的Android ListView:使用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;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // 在string中定義的字符串數組
    moreNames = getResources().getStringArray(R.array.list_array);
    // 在main.xml中定義的listview
    listView = (ListView) findViewById(R.id.listViewMoreInfo);

    // 隱藏ListView的分隔線
    listView.setDivider(null);
    listView.setAdapter(baseAdapter);

    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public 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() {
    @Override
    public 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;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public int getCount() {
        return moreNames.length;
    }
};

}</pre>

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!