Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android ListView之動態修改

Android ListView之動態修改

編輯:Android開發實例

關於ListView樣式及內容的動態修改,本文使用了重寫BaseAdapter。
 
 

MyAdapter 類:
package com.android.test;
import java.util.ArrayList;
import java.util.Map;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter {
    private ListMain main;
    private ArrayList<Map<String, Object>> list;
    public MyAdapter(ListMain main, ArrayList<Map<String, Object>> list) {
        this.main = main;
        this.list = list;
    }
    @Override
    public int getCount() {
        return list.size();
    }
    @Override
    public Object getItem(int position) {
       return list.get(position);
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //如果未選擇或list列表為空時直接跳出,避免NullPointException
        if (position < 0 || list.size() <= 0) {
            return null;
        }
        //如果為空重新導入ListView的布局文件,布局文件自定義
        if (convertView == null) {
            convertView = LayoutInflater.from(main).inflate(R.layout.list1, null);
        }
        //實例化
        ImageView img = (ImageView)convertView.findViewById(R.id.list1_img_icon);
        TextView tv1 = (TextView)convertView.findViewById(R.id.list1_tv1);
        TextView tv2 = (TextView)convertView.findViewById(R.id.list1_tv2);
        //獲取參數
        Map&lt;String, Object&gt; map = list.get(position);
        tv1.setText((String)map.get("TITLE"));
        tv2.setText((String)map.get("CONTENT"));
        //修改樣式
        if (main.getStatus(position) == ListMain.LIST_SELECT) {
            convertView.setBackgroundColor(Color.parseColor("#003D79"));
            img.setBackgroundResource(R.drawable.ic_settings_personalize);
            tv1.setTextColor(Color.BLUE);
            tv1.setShadowLayer(1, 1, 0.75f, Color.WHITE);
        } else {
            convertView.setBackgroundColor(Color.BLACK);
            img.setBackgroundResource(Integer.valueOf(map.get("IMG").toString()));
            tv1.setTextColor(Color.WHITE);
            tv1.setShadowLayer(1, 1, 0.75f, Color.CYAN);
        }
    return convertView;
    }
}

在ListMain中,插入一個ArrayList<Map<String, Object>>

<pre>ArrayList<Map<String, Object>> list;
list = new ArrayList<Map<String,Object>>();
for (int i = 0; i < TITLE.length; i++) {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("TITLE", TITLE[i]);
    map.put("CONTENT", CONTENT[i]);
    map.put("IMG", IMG[i]);
    map.put("STATUS", LIST_NOT);
    list.add(map);}

將ListView與Adapter綁定:

<pre>adapter = new MyAdapter(this, list);
lv.setAdapter(adapter);

在onItemClick中處理選中事件:

<pre>for (int i = 0; i < TITLE.length; i++) {

    list.get(i).put("STATUS", LIST_NOT);
}
list.get(arg2).put("STATUS", LIST_SELECT);

adapter.getView(arg2, null, lv);
adapter.notifyDataSetChanged();

效果圖如下(圖片隨便拉來的:-))
初始時:

選中“後來”,改變圖標,改變字體顏色,改變文字陰影。

ok,這樣就完成了。
後續繼續更新。

出處http://www.20864.com/?p=90

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved