Android从零开始(十一)
生活随笔
收集整理的這篇文章主要介紹了
Android从零开始(十一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
知識點:BaseAdapter
一般的數據資料都是介紹用ArrayAdapter 、SimpleAdapter 、SimpleCursorAdapte,但是個人喜歡用BaseAdapter,原因很簡單,BaseAdapter使用起來條理清楚,你想用列些什么數據就定義什么數據列出來,下面就看看它是怎么玩的吧···
首先看一下效果:
步驟一:編寫布局(代碼如下)
activity_main.xml:
Java代碼<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/list_view" /> </RelativeLayout> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity" ><ListViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/list_view" /></RelativeLayout>
list_item_layout.xml:
Java代碼<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:layout_width="160dp" android:layout_height="100dp" android:scaleType="fitCenter" android:id="@+id/list_item_image" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:textSize="30sp" android:id="@+id/list_item_txt1" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="15sp" android:id="@+id/list_item_txt2" /> </LinearLayout> </LinearLayout> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><ImageView android:layout_width="160dp"android:layout_height="100dp"android:scaleType="fitCenter"android:id="@+id/list_item_image"/><LinearLayout android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:textSize="30sp"android:id="@+id/list_item_txt1"/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="15sp"android:id="@+id/list_item_txt2"/></LinearLayout></LinearLayout>
步驟二、Activity準備數據(核心代碼):
Java代碼package com.veryedu.baseadapter; import java.util.ArrayList; import com.example.baseadapter.R; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; public class MainActivity extends Activity { ArrayList data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView=(ListView)this.findViewById(R.id.list_view); //準備數據源 data=new ArrayList(); data.add(new HuoYing(R.raw.hyrz2_001, "粗眉", "不會忍術,但是體術超強,青春無極限")); data.add(new HuoYing(R.raw.hyrz2_002, "奈良鹿丸", "分析能力超強")); data.add(new HuoYing(R.raw.hyrz2_003, "李洛克", "體術的繼承人")); data.add(new HuoYing(R.raw.hyrz2_004, "春野櫻", "大扇子")); data.add(new HuoYing(R.raw.hyrz2_005, "天天", "超多刃具玩家")); data.add(new HuoYing(R.raw.hyrz2_006, "山中井野", "年輕豬肉跌蝶成員")); data.add(new HuoYing(R.raw.hyrz2_007, "日向寧次", "白眼,相當于望遠鏡吧")); listView.setAdapter(new BaseAdapter() { //getView,是BaseAdapter的核心方法 //這個方法將決定數據以何種布局填充到哪些控件中 @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub //為當前的View指定布局文件 //如果是找控件,我們使用findViewById //如果是找資源,我們使用getResources //如果是找布局,我們使用LayoutInflater Log.v("TAG", "當前是第"+position+"項"); //getView會被反復調用:當數據項在屏幕中顯示的時候就調用這個方法 //這每個數據項的布局是一樣,僅僅只是數據不同,所以在這里進行一個判斷 //避免重復加載布局 if(convertView==null){ convertView=LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item_layout,null); } //獲取數據源中的數據 HuoYing hy=(HuoYing)data.get(position); //獲取當前項的控件 ImageView image_view=(ImageView)convertView.findViewById(R.id.list_item_image); TextView text_view1=(TextView)convertView.findViewById(R.id.list_item_txt1); TextView text_view2=(TextView)convertView.findViewById(R.id.list_item_txt2); //將數據填充到控件中 image_view.setImageResource(hy.image); text_view1.setText(hy.name); text_view2.setText(hy.mtext); return convertView; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return data.get(position); } @Override public int getCount() { // TODO Auto-generated method stub //一班都這么寫,顯示所有的數據 return data.size(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } package com.veryedu.baseadapter;import java.util.ArrayList;import com.example.baseadapter.R;import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;public class MainActivity extends Activity {ArrayList data;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView listView=(ListView)this.findViewById(R.id.list_view);//準備數據源data=new ArrayList();data.add(new HuoYing(R.raw.hyrz2_001, "粗眉", "不會忍術,但是體術超強,青春無極限"));data.add(new HuoYing(R.raw.hyrz2_002, "奈良鹿丸", "分析能力超強"));data.add(new HuoYing(R.raw.hyrz2_003, "李洛克", "體術的繼承人"));data.add(new HuoYing(R.raw.hyrz2_004, "春野櫻", "大扇子"));data.add(new HuoYing(R.raw.hyrz2_005, "天天", "超多刃具玩家"));data.add(new HuoYing(R.raw.hyrz2_006, "山中井野", "年輕豬肉跌蝶成員"));data.add(new HuoYing(R.raw.hyrz2_007, "日向寧次", "白眼,相當于望遠鏡吧"));listView.setAdapter(new BaseAdapter() {//getView,是BaseAdapter的核心方法//這個方法將決定數據以何種布局填充到哪些控件中@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stub//為當前的View指定布局文件//如果是找控件,我們使用findViewById//如果是找資源,我們使用getResources//如果是找布局,我們使用LayoutInflaterLog.v("TAG", "當前是第"+position+"項");//getView會被反復調用:當數據項在屏幕中顯示的時候就調用這個方法//這每個數據項的布局是一樣,僅僅只是數據不同,所以在這里進行一個判斷//避免重復加載布局if(convertView==null){convertView=LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item_layout,null);}//獲取數據源中的數據HuoYing hy=(HuoYing)data.get(position);//獲取當前項的控件ImageView image_view=(ImageView)convertView.findViewById(R.id.list_item_image);TextView text_view1=(TextView)convertView.findViewById(R.id.list_item_txt1);TextView text_view2=(TextView)convertView.findViewById(R.id.list_item_txt2);//將數據填充到控件中image_view.setImageResource(hy.image);text_view1.setText(hy.name);text_view2.setText(hy.mtext);return convertView;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn data.get(position);}@Overridepublic int getCount() {// TODO Auto-generated method stub//一班都這么寫,顯示所有的數據return data.size();}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}
一般的數據資料都是介紹用ArrayAdapter 、SimpleAdapter 、SimpleCursorAdapte,但是個人喜歡用BaseAdapter,原因很簡單,BaseAdapter使用起來條理清楚,你想用列些什么數據就定義什么數據列出來,下面就看看它是怎么玩的吧···
首先看一下效果:
步驟一:編寫布局(代碼如下)
activity_main.xml:
Java代碼
list_item_layout.xml:
Java代碼
步驟二、Activity準備數據(核心代碼):
Java代碼
轉載于:https://www.cnblogs.com/shhaoran/archive/2013/02/04/2924529.html
總結
以上是生活随笔為你收集整理的Android从零开始(十一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 来园子开博了
- 下一篇: [转]VS2010安装说明及所有安装出错