編輯: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<String, Object> 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
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
Android可以備份應用程序的數據到遠程“雲”存儲,以應用程序的數據和設置的一個還原點。可以只備份應用程序數據。為了訪問其他應用程序的數據,需要
第一步:代碼混淆(注意引入的第三方jar) 在新版本的ADT創建項目時,混碼的文件不再是proguard.cfg,而是project.properties和pro