2012年3月14日水曜日

SimpleAdapterのsample code

SimpleAdapterのsample code

文字列を代入し、色を付けたTextViewを一覧にして表示するSimpleAdapterのsample codeです。

main.xmlは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <TextView
        android:id="@+id/TextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
    </TextView>
</LinearLayout>


Javaのcodeは次のとおりです。

public class SimpleAdapterActivity extends ListActivity{
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        String sFrom[] = {"String", "Color"};
        int iTo[] = new int[]{R.id.TextView, R.id.TextView};
        ArrayList<Map<String, Object>> data =new ArrayList<Map<String, Object>>();
        SimpleAdapter sa;
        SimpleAdapter.ViewBinder savb;
        
        savb = new SimpleAdapter.ViewBinder(){
            @Override
            public boolean setViewValue(View view, Object data, String s){
                if(view.getId()==R.id.TextView){
                    TextView tv;
                    tv = (TextView)view;
                    if(data.getClass().equals(String.class)==true){
                        String sData;
                        
                        sData = (String)data;
                        tv.setText(sData);
                        return true;
                    }
                    if(data.getClass().equals(Integer.class)==true){
                        Integer iData;
                        
                        iData = (Integer)data;
                        tv.setBackgroundColor(iData.intValue());
                        return true;
                    }
                }
                return false;
            }
        };
        
        //適当にデータを作成する。
        Map<String, Object> m;
        m = new HashMap<String, Object>();
        m.put("String", "Red");
        m.put("Color", 0xffff0000);
        data.add(m);
        m = new HashMap<String, Object>();
        m.put("String", "Green");
        m.put("Color", 0xff00ff00);
        data.add(m);
        m = new HashMap<String, Object>();
        m.put("String", "Blue");
        m.put("Color", 0xff0000ff);
        data.add(m);
        
        sa = new SimpleAdapter(this, data, R.layout.main, sFrom, iTo);
        sa.setViewBinder(savb);
        setListAdapter(sa);
    }
}

0 件のコメント:

コメントを投稿