編輯:關於Android編程
Android實現帶圖標的ListView已經成為每一個android應用開發初學者的必學知識,熟練掌握此知識點,對我們以後的開發工作會大有好處,今天我們就來一步一步實現一個Android帶圖標的ListView。
(1)首先我們要准備一些必須的資源文件,先隨便找8張圖片,分別取名叫img01,img02,img03,img04,img05,img06,img07,img08
(2)在layout下面的activity_main.xml中添加一個ListView控件,代碼如下:
在layout下面添加一個名字叫做items.xml的文件,其內容如下:
(3)Java代碼部分,我們最主要的工作就是重新定義類MainListViewAdapter,這個類就是向ListView視圖提供數據的。代碼有一點點長,是因為我都加了很詳細的注釋,具體如下:
public class MainActivity extends Activity { // 聲明ListView控件 private ListView mListView; // 聲明數組鏈表,其裝載的類型是ListItem(封裝了一個Drawable和一個String的類) private ArrayListmList; /** * Acitivity的入口方法 */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 指定Activity的布局使用activity_main.xml setContentView(R.layout.activity_main); // 通過findviewByID獲取到ListView對象 mListView = (ListView) findViewById(R.id.listView1); // 獲取Resources對象 Resources res = this.getResources(); mList = new ArrayList (); // 初始化data,裝載八組數據到數組鏈表mList中 ListItem item = new ListItem(); item.setImage(res.getDrawable(R.drawable.img01)); item.setTitle("項目一"); mList.add(item); item = new ListItem(); item.setImage(res.getDrawable(R.drawable.img02)); item.setTitle("項目二"); mList.add(item); item = new ListItem(); item.setImage(res.getDrawable(R.drawable.img03)); item.setTitle("項目三"); mList.add(item); item = new ListItem(); item.setImage(res.getDrawable(R.drawable.img04)); item.setTitle("項目四"); mList.add(item); item = new ListItem(); item.setImage(res.getDrawable(R.drawable.img05)); item.setTitle("項目五"); mList.add(item); item = new ListItem(); item.setImage(res.getDrawable(R.drawable.img06)); item.setTitle("項目六"); mList.add(item); item = new ListItem(); item.setImage(res.getDrawable(R.drawable.img07)); item.setTitle("項目七"); mList.add(item); item = new ListItem(); item.setImage(res.getDrawable(R.drawable.img08)); item.setTitle("項目八"); mList.add(item); // 獲取MainListAdapter對象 MainListViewAdapter adapter = new MainListViewAdapter(); // 將MainListAdapter對象傳遞給ListView視圖 mListView.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } /** * 定義ListView適配器MainListViewAdapter */ class MainListViewAdapter extends BaseAdapter { /** * 返回item的個數 */ @Override public int getCount() { // TODO Auto-generated method stub return mList.size(); } /** * 返回item的內容 */ @Override public Object getItem(int position) { // TODO Auto-generated method stub return mList.get(position); } /** * 返回item的id */ @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } /** * 返回item的視圖 */ @Override public View getView(int position, View convertView, ViewGroup parent) { ListItemView listItemView; // 初始化item view if (convertView == null) { // 通過LayoutInflater將xml中定義的視圖實例化到一個View中 convertView = LayoutInflater.from(MainActivity.this).inflate( R.layout.items, null); // 實例化一個封裝類ListItemView,並實例化它的兩個域 listItemView = new ListItemView(); listItemView.imageView = (ImageView) convertView .findViewById(R.id.image); listItemView.textView = (TextView) convertView .findViewById(R.id.title); // 將ListItemView對象傳遞給convertView convertView.setTag(listItemView); } else { // 從converView中獲取ListItemView對象 listItemView = (ListItemView) convertView.getTag(); } // 獲取到mList中指定索引位置的資源 Drawable img = mList.get(position).getImage(); String title = mList.get(position).getTitle(); // 將資源傳遞給ListItemView的兩個域對象 listItemView.imageView.setImageDrawable(img); listItemView.textView.setText(title); // 返回convertView對象 return convertView; } } /** * 封裝兩個視圖組件的類 */ class ListItemView { ImageView imageView; TextView textView; } /** * 封裝了兩個資源的類 */ class ListItem { private Drawable image; private String title; public Drawable getImage() { return image; } public void setImage(Drawable image) { this.image = image; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } } }
源碼下載鏈接:
Android實現帶圖標的ListView
加速篇GRADLE的構建過程通常會比較漫長,一個中等項目,10M左右大小的app,一次完整構建大概在5分鐘左右,是不是很嚇人,當然,如果是在調試階段,采用Android
我們在做Android應用尤其是商業應用的時候,很多時候都需要後期版本升級,如果我們的數據庫文件非常大,比如游戲之類的,這時候就不應該每次版本更新都去重新復制數據庫。將數
通常我們使用Service都要和它通信,當想要與Service通信的時候,那麼Service要處於綁定狀態的。然後客戶端可以拿到一個Binder與服務端進行通信,這個過程
在Android開發當中,在界面上彈出一個Dialog對話框使我們經常需要做的,本篇隨筆將詳細的講解Dialog對話框這個概念,包括定義不同樣式的對話框。一、Dialog