▼Androidメモ▼
リストビューとグリッドビューとビューページャー


リストビューとグリッドビューとビューページャーを利用するプログラムを作成する。



ソースコード
AdapterEx.java
package net.npaka.adapterex;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;

//リストビューとグリッドビューとビューページャー
public class AdapterEx extends Activity
implements View.OnClickListener {
private final static int WC=LinearLayout.LayoutParams.WRAP_CONTENT;
private final static String TAG_LISTVIEW="listview";
private final static String TAG_GRIDVIEW="gridview";
private final static String TAG_VIEWPAGER="viewpager";
public static ArrayList<AdapterItem> items;

//アクティビティ起動時に呼ばれる
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);

//要素の情報群の生成
items=new ArrayList<AdapterItem>();
for (int i=0;i<30;i++) {
AdapterItem item=new AdapterItem();
item.icon=res2bmp(this,R.drawable.ic_launcher);
item.text="項目"+i;
items.add(item);
}

//レイアウトの生成
LinearLayout layout=new LinearLayout(this);
layout.setBackgroundColor(Color.WHITE);
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);

//ボタンの生成
layout.addView(makeButton("リストビュー",TAG_LISTVIEW));
layout.addView(makeButton("グリッドビュー",TAG_GRIDVIEW));
layout.addView(makeButton("ビューページャー",TAG_VIEWPAGER));
}

//ボタンの生成
private Button makeButton(String text,String tag) {
Button button=new Button(this);
button.setText(text);
button.setTag(tag);
button.setOnClickListener(this);
button.setLayoutParams(new LinearLayout.LayoutParams(WC,WC));
return button;
}

//ボタンクリック時に呼ばれる
public void onClick(View v) {
String tag=(String)v.getTag();
if (TAG_LISTVIEW.equals(tag)) {
Intent intent=new Intent(this,ListViewActivity.class);
startActivity(intent);
} else if (TAG_GRIDVIEW.equals(tag)) {
Intent intent=new Intent(this,GridViewActivity.class);
startActivity(intent);
} else if (TAG_VIEWPAGER.equals(tag)) {
Intent intent=new Intent(this,ViewPagerActivity.class);
startActivity(intent);
}
}

//リソース→ビットマップ
private Bitmap res2bmp(Context context,int resID) {
return BitmapFactory.decodeResource(
context.getResources(),resID);
}
}

AdapterItem.java
package net.npaka.adapterex;
import android.graphics.Bitmap;

//要素の情報
public class AdapterItem {
public Bitmap icon;
public String text;
}

ListViewActivity.java
package net.npaka.adapterex;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

//リストビューアクティビティ
public class ListViewActivity extends Activity {
private ArrayList<AdapterItem> items;

//アクティビティ起動時に呼ばれる
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);

//要素の情報群の取得
items=AdapterEx.items;

//リストビューの生成
ListView listView=new ListView(this);
listView.setScrollingCacheEnabled(false);
listView.setAdapter(new MyAdapter());
setContentView(listView);
}

//自作アダプタ
private class MyAdapter extends BaseAdapter {
//要素数の取得
@Override
public int getCount() {
return items.size();
}

//要素の取得
@Override
public AdapterItem getItem(int pos) {
return items.get(pos);
}

//要素IDの取得
@Override
public long getItemId(int pos) {
return pos;
}

//セルのビューの生成
@Override
public View getView(int pos,View view,ViewGroup parent) {
Context context=ListViewActivity.this;
AdapterItem item=items.get(pos);

//レイアウトの生成
if (view==null) {
LinearLayout layout=new LinearLayout(context);
layout.setBackgroundColor(Color.WHITE);
layout.setPadding(10,10,10,10);
layout.setGravity(Gravity.CENTER_VERTICAL);
view=layout;

//アイコン
ImageView imageView=new ImageView(context);
imageView.setTag("icon");
imageView.setLayoutParams(new LinearLayout.LayoutParams(120,120));
layout.addView(imageView);

//テキストの指定
TextView textView=new TextView(context);
textView.setTag("text");
textView.setTextColor(Color.rgb(0,0,0));
textView.setPadding(10,20,10,20);
layout.addView(textView);
}

//値の指定
ImageView imageView=(ImageView)view.findViewWithTag("icon");
imageView.setImageBitmap(item.icon);
TextView textView=(TextView)view.findViewWithTag("text");
textView.setText(item.text);
return view;
}
}
}

GridViewActivity.java
package net.npaka.adapterex;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

//グリッドビューアクティビティ
public class GridViewActivity extends Activity {
private ArrayList<AdapterItem> items;

//アクティビティ起動時に呼ばれる
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);

//要素の情報群の取得
items=AdapterEx.items;

//グリッドビューの生成
GridView gridView=new GridView(this);
gridView.setNumColumns(4);
gridView.setAdapter(new MyAdapter());
setContentView(gridView);
}

//自作アダプタ
private class MyAdapter extends BaseAdapter {
//要素数の取得
@Override
public int getCount() {
return items.size();
}

//要素の取得
@Override
public Object getItem(int pos) {
return items.get(pos);
}

//要素IDの取得
@Override
public long getItemId(int pos) {
return pos;
}

//セルのビューの生成
@Override
public View getView(int pos,View view,ViewGroup parent) {
Context context=GridViewActivity.this;
AdapterItem item=items.get(pos);

//レイアウトの生成
if (view==null) {
LinearLayout layout=new LinearLayout(context);
layout.setBackgroundColor(Color.WHITE);
layout.setPadding(10,10,10,10);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setGravity(Gravity.CENTER);
view=layout;

//アイコン
ImageView imageView=new ImageView(context);
imageView.setTag("icon");
imageView.setLayoutParams(new LinearLayout.LayoutParams(120,120));
layout.addView(imageView);

//テキストの指定
TextView textView=new TextView(context);
textView.setTag("text");
textView.setTextColor(Color.rgb(0,0,0));
textView.setGravity(Gravity.CENTER);
layout.addView(textView);
}

//値の指定
ImageView imageView=(ImageView)view.findViewWithTag("icon");
imageView.setImageBitmap(item.icon);
TextView textView=(TextView)view.findViewWithTag("text");
textView.setText(item.text);
return view;
}
}
}

ViewPagerActivity.java
package net.npaka.adapterex;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

//ビューページャーアクティビティ
public class ViewPagerActivity extends Activity {
private ArrayList<AdapterItem> items;

//アクティビティ起動時に呼ばれる
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);

//要素の情報群の取得
items=AdapterEx.items;

//ビューページャーの生成
ViewPager viewPager=new ViewPager(this);
viewPager.setAdapter(new MyPageAdapter());
setContentView(viewPager);
}

//自作ページアダプタ
private class MyPageAdapter extends PagerAdapter {
//ページ数の取得
@Override
public int getCount() {
return items.size();
}

//ページ生成時に呼ばれる
@Override
public Object instantiateItem(View view,int pos) {
ViewPager pager=(ViewPager)view;
Context context=ViewPagerActivity.this;
AdapterItem item=items.get(pos);

//レイアウトの生成
LinearLayout layout=new LinearLayout(context);
layout.setBackgroundColor(Color.WHITE);
layout.setPadding(10,10,10,10);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setGravity(Gravity.CENTER);

//アイコン
ImageView imageView=new ImageView(context);
imageView.setLayoutParams(new LinearLayout.LayoutParams(240,240));
imageView.setImageBitmap(item.icon);
layout.addView(imageView);

//テキストの指定
TextView textView=new TextView(context);
textView.setTextColor(Color.rgb(0,0,0));
textView.setGravity(Gravity.CENTER);
textView.setText(item.text);
layout.addView(textView);

//ページャー
pager.addView(layout,0);
return layout;
}

//ページ破棄時に呼ばれる
@Override
public void destroyItem(View collection,int position,Object view) {
((ViewPager)collection).removeView((View)view);
}

//ページを構成するView判定時に呼ばれる
@Override
public boolean isViewFromObject(View view,Object object) {
return view==(LinearLayout)object;
}
}
}

AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.npaka.adapterex"
android:versionCode="1"
android:versionName="1.0">

<uses-sdk android:minSdkVersion="13" android:targetSdkVersion="15" />

<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme">
<activity
android:name=".AdapterEx"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".ListViewActivity" />

<activity android:name=".GridViewActivity" />

<activity android:name=".ViewPagerActivity" />
</application>

</manifest>


−戻る−