2012年11月1日木曜日

ListView、処理の高速化


findViewByIdを一度だけ実行する。
setTagを使用する。

********************  MainActivity.java  ********************
package jp.lesson.studyandroid;
import java.util.ArrayList;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.app.ListActivity;
import android.content.Context;
public class MainActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        ValueItem data1 = new ValueItem();
        data1.setMsg("Sample data0");
        ValueItem data2 = new ValueItem();
        data2.setMsg("Sample data1");
        ValueItem data3 = new ValueItem();
        data3.setMsg("Sample data2");
       
        ArrayList<ValueItem> list = new ArrayList<ValueItem>();
        list.add(data1);
        list.add(data2);
        list.add(data3);
       
        ListAdapter adapter = new ValueItemAdapter(getApplicationContext(),list);
       
        setListAdapter(adapter);
    }
   
    public class ValueItemAdapter extends ArrayAdapter<ValueItem> {
        Context context;
        LayoutInflater inflater;
        public ValueItemAdapter(Context context, ArrayList<ValueItem> objects) {
            super(context, 0, objects);
            this.context = context;
            this.inflater = LayoutInflater.from(context);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ValueItem item = (ValueItem)getItem(position);
           
            ViewHolder holder =null;
           if (convertView == null) {
                convertView = inflater.inflate(R.layout.row, null);
               
                holder = new ViewHolder();
                holder.chkbox = (CheckBox)convertView.findViewById(R.id.checkBox1);
                holder.txtview = (TextView)convertView.findViewById(R.id.textView1);
                holder.button = (Button)convertView.findViewById(R.id.button1);
                convertView.setTag(holder);

            }
            else {
                holder = (ViewHolder)convertView.getTag();
            }
           
            holder.chkbox.setChecked(item.isChecked());
            holder.txtview.setText(item.getTextmsg());

            return convertView;
        }
    }
   
    static class ViewHolder {
        CheckBox chkbox;
        TextView txtview;
        Button button;
    }

}


********************  ValueItem.java  ********************
package jp.lesson.studyandroid;
public class ValueItem {
    private String strmsg = "";
   
    public boolean isChecked() {
        return true;
    }
    public CharSequence getTextmsg() {
        return strmsg;
    }
    public void setMsg(String string) {
        this.strmsg = string;
    }
}

********************  activity_main.java  ********************
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ListView
        android:id="@+id/android:list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ListView>
    <TextView
        android:id="@+id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="empty" />
</LinearLayout>


ListView、チェックボックスとボタンを表示するリスト


チェックボックス、テキスト、ボタンを表示するリスト。

********************  MainActivity.java  ********************
package jp.lesson.studyandroid;
import java.util.ArrayList;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.app.ListActivity;
import android.content.Context;
public class MainActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        ValueItem data1 = new ValueItem();
        data1.setMsg("Sample data0");
        ValueItem data2 = new ValueItem();
        data2.setMsg("Sample data1");
        ValueItem data3 = new ValueItem();
        data3.setMsg("Sample data2");
       
        ArrayList<ValueItem> list = new ArrayList<ValueItem>();
        list.add(data1);
        list.add(data2);
        list.add(data3);
       
        ListAdapter adapter = new ValueItemAdapter(getApplicationContext(),list);
       
        setListAdapter(adapter);
    }
   
    public class ValueItemAdapter extends ArrayAdapter<ValueItem> {
        Context context;
        LayoutInflater inflater;
        public ValueItemAdapter(Context context, ArrayList<ValueItem> objects) {
            super(context, 0, objects);
            this.context = context;
            this.inflater = LayoutInflater.from(context);
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ValueItem item = (ValueItem)getItem(position);
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.row, null);
            }
            CheckBox chkbox = (CheckBox)convertView.findViewById(R.id.checkBox1);
            TextView txtview = (TextView)convertView.findViewById(R.id.textView1);
            Button button = (Button)convertView.findViewById(R.id.button1);
           
            chkbox.setChecked(item.isChecked());
            txtview.setText(item.getTextmsg());
            return convertView;
        }
    }
}

********************  ValueItem.java  ********************
package jp.lesson.studyandroid;
public class ValueItem {
    private String strmsg = "";
   
    public boolean isChecked() {
        return true;
    }
    public CharSequence getTextmsg() {
        return strmsg;
    }
    public void setMsg(String string) {
        this.strmsg = string;
    }
}

********************  activity_main.java  ********************
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ListView
        android:id="@+id/android:list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ListView>
    <TextView
        android:id="@+id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="empty" />
</LinearLayout>

 


2012年10月31日水曜日

エラー

実行したらこんなエラーメッセージがでた。

The connection to adb is down, and a severe error has occured.
You must restart adb and Eclipse.
Please ensure that adb is correctly located at 'C:\android\android-sdk\platform-tools\adb.exe' and can be executed.

adb と Eclipse を再起動しなければならない?
adbって?

わからないが、上記にあったadb.exeを実行したら動いた。

2012年10月12日金曜日

lesson17


日付をクリックすると、その日のメモ帳を呼び出す。

********************  ListMain.java  ********************
package jp.lesson.study10;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListMain extends ListActivity {
    @SuppressLint("ParserError")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO 自動生成されたメソッド・スタブ
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listmain);
       
        // 日付の一覧を元にArrayAdapterを生成
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, selectDays());
       
        // ArrayAdapterをリストに設定
        getListView().setAdapter(adapter);
    }
   
    /*
     * 今月の日付の一覧をリストにして返却
     */
   
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
       
        // 選択したアイテムから日付を取得
        String date = (String) l.getAdapter().getItem(position);
       
        try {
            Date dtime = Defines.sFmt.parse(date);
            // MemoActivityを呼び出すIntentを生成
            Intent intent = new Intent(this, MemoActivity.class);
            // パラメータに選択した日付を設定
            intent.putExtra(Defines.KEY_DATE, dtime.getTime());
            // Intent呼び出しを実行
            startActivity(intent);
        } catch (ParseException e) {
           
        }
    }
    private ArrayList<String> selectDays() {
        ArrayList<String> ret = new ArrayList<String>();
       
        // 日付を整形出力するためのフォーマッターを生成
        SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd (E)");
       
        // 今日のカレンダー取得
        Calendar cal = Calendar.getInstance();
       
        // つきの最大日数分繰り返す
        int maxday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        for ( int i = 0; i < maxday; i++) {
            cal.set(Calendar.DAY_OF_MONTH, i + 1);
            // 整形した日付の文字列をリストに追加
            String datestr = fmt.format(cal.getTime());
            ret.add(datestr);
        }
        return ret;
    }
}
********************  MemoActivity.java  ********************
package jp.lesson.study10;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MemoActivity extends Activity {
    // Loggerのタグ
    private static final String TAG = "Chapter04";
   
    // SharedPreferencesのインスタンス
    private SharedPreferences mPrefs;
   
    // パラメータで受け取った日付
    private long mDate = 0;
   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit);
        // SharedPreferencesのインスタンスを取得
        mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
        // Intentから日付を取得
        Intent intent = getIntent();
        if (intent != null) {
            if (intent.hasExtra(Defines.KEY_DATE)) {
                mDate = intent.getLongExtra(Defines.KEY_DATE, 0);
            }
        }
       
        // SharedPreferencesから"content"の値を取得
        String content = mPrefs.getString(getKey(mDate), "");
       
        // 今日のカレンダーを取得
        // Calendar cal = Calendar.getInstance();
       
        // 今日の日付を文字列に変換
        String date = Defines.sFmt.format(mDate);
       
        TextView txtsubject = (TextView) findViewById(R.id.textView1);
        EditText txtcontent = (EditText) findViewById(R.id.editText1);
       
        txtsubject.setText(date);
        txtcontent.setText(content);
    }
   
    /*
     * 設定ファイルから値を取得するキーを生成
     *
     * @param value
     * @return
     */
    private String getKey(long value) {
        return "key." + value;
    }
   
    public void onClickButton(View view) {
        switch(view.getId()){
            case R.id.button1:{
                AlertDialog.Builder dlg = new AlertDialog.Builder(this);
                dlg.setTitle(getString(R.string.lbSaveTitle));
                dlg.setPositiveButton(getString(R.string.lbYes),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO 自動生成されたメソッド・スタブ
                            // 保存処理
                            EditText txtcontent = (EditText) findViewById(R.id.editText1);
                            String content = txtcontent.getText().toString();
                           
                            // 保存されたデータを確認
                            Log.d(TAG, "content=" + content);
                           
                            // Editorのインスタンスを取得
                            Editor editor = mPrefs.edit();
                           
                            // "content"に入力された文字列を設定
                            editor.putString(getKey(mDate), content);
                           
                            // 設定を反映する
                            editor.commit();
                           
                            finish();
                        }
                    });
                dlg.setNegativeButton(getString(R.string.lbNo),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO 自動生成されたメソッド・スタブ
                            // キャンセル
                        }
                    });
                dlg.show();
            }break;
            case R.id.button2:{
                finish();
            }break;
        }
    }
}

********************  Defines.java  ********************
package jp.lesson.study10;
import java.text.SimpleDateFormat;
public interface Defines {
    // 日付を取得するキー
    public static final String KEY_DATE = "date";
    // メモ帳のサブジェクトを取得する際のキー
    public static final String KEY_SUBJECT = "subject";
    // メモ帳の内容を取得する際のキー
    public static final String KEY_CONTENT = "content";
   
    // 日付を整形出力するためのフォーマッター
    public static SimpleDateFormat sFmt = new SimpleDateFormat("yyyy/MM/dd (E)");
}

********************  listmain.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" >
    <ListView
        android:id="@+id/android:list"
        android:entries="@array/sampledata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>
    <LinearLayout
        android:id="@+id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:text="empty list"
            android:id="@+id/TextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
       
    </LinearLayout>
</LinearLayout>

********************  strings.xml  ********************
<resources>
    <string name="app_name">Study10</string>
    <string name="hello_world">hello</string>
    <string name="menu_settings">menu</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="title_memo">MemoActivity</string>
   
    <string name="lbSave">保存</string>
    <string name="lbCancel">キャンセル</string>
    <string name="lbSaveTitle">保存確認</string>
    <string name="lbYes">はい</string>
    <string name="lbNo">いいえ</string>
</resources>

********************  AndroidManifest.xml  ********************
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.lesson.study10"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="15" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MemoActivity"
            android:label="@string/title_memo">
        </activity>
        <activity
            android:name=".ListMain"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

エラー

 警告: Data partition already in use. Changes will not persist!
 警告: Cache partition already in use. Changes will not persist!

エミュレータが起動しなくなった。
わからない。

結局、新しいAVDを作って使ったら動いた。

2012年10月11日木曜日

lesson16


********************  ListMain.java  ********************
package jp.lesson.study10;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class ListMain extends ListActivity {
    @SuppressLint("ParserError")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO 自動生成されたメソッド・スタブ
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listmain);
       
        // 日付の一覧を元にArrayAdapterを生成
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, selectDays());
       
        // ArrayAdapterをリストに設定
        getListView().setAdapter(adapter);
    }
   
    /*
     * 今月の日付の一覧をリストにして返却
     */
   
    private ArrayList<String> selectDays() {
        ArrayList<String> ret = new ArrayList<String>();
       
        // 日付を整形出力するためのフォーマッターを生成
        SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd (E)");
       
        // 今日のカレンダー取得
        Calendar cal = Calendar.getInstance();
       
        // つきの最大日数分繰り返す
        int maxday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        for ( int i = 0; i < maxday; i++) {
            cal.set(Calendar.DAY_OF_MONTH, i + 1);
            // 整形した日付の文字列をリストに追加
            String datestr = fmt.format(cal.getTime());
            ret.add(datestr);
        }
        return ret;
    }
}

********************  listmain.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" >
    <ListView
        android:id="@+id/android:list"
        android:entries="@array/sampledata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>
    <LinearLayout
        android:id="@+id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:text="empty list"
            android:id="@+id/TextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
       
    </LinearLayout>
</LinearLayout>

********************  arrays.xml  ********************
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="sampledata">
        <item >data1</item>
        <item >data2</item>
        <item >data3</item>
        <item >data4</item>
        <item >data5</item>
    </string-array>
   
</resources>

********************  strings.xml  ********************
<resources>
    <string name="app_name">Study10</string>
    <string name="hello_world">hello</string>
    <string name="menu_settings">menu</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="title_memo">MemoActivity</string>
   
    <string name="lbSave">保存</string>
    <string name="lbCancel">キャンセル</string>
    <string name="lbSaveTitle">保存確認</string>
    <string name="lbYes">はい</string>
    <string name="lbNo">いいえ</string>
</resources>

********************  AndroidManifest.xml  ********************
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.lesson.study10"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="15" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MemoActivity"
            android:label="@string/title_memo">
            <!--
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            -->
        </activity>
        <activity
            android:name=".ListMain"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

2012年10月10日水曜日

lesson15

********************  ListMain.java  ********************
package jp.lesson.study10;
import android.app.ListActivity;
import android.os.Bundle;
public class ListMain extends ListActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listmain);
    }
}

********************  listmain.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" >
    <ListView
        android:id="@+id/android:list"
        android:entries="@array/sampledata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>
    <LinearLayout
        android:id="@+id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:text="empty list"
            android:id="@+id/TextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
       
    </LinearLayout>
</LinearLayout>

********************  arrays.xml  ********************
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="sampledata">
        <item >data1</item>
        <item >data2</item>
        <item >data3</item>
        <item >data4</item>
        <item >data5</item>
    </string-array>
   
</resources>

********************  strings.xml  ********************
<resources>
    <string name="app_name">Study10</string>
    <string name="hello_world">hello</string>
    <string name="menu_settings">menu</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="title_memo">MemoActivity</string>
   
    <string name="lbSave">保存</string>
    <string name="lbCancel">キャンセル</string>
    <string name="lbSaveTitle">保存確認</string>
    <string name="lbYes">はい</string>
    <string name="lbNo">いいえ</string>
</resources>

********************  AndroidManifest.xml  ********************
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.lesson.study10"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="15" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MemoActivity"
            android:label="@string/title_memo">
            <!--
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            -->
        </activity>
        <activity
            android:name=".ListMain"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

2012年10月7日日曜日

lesson14


********************  MemoActivity.java  ********************
package jp.lesson.study10;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MemoActivity extends Activity {
    // Loggerのタグ
    private static final String TAG = "Chapter04";
   
    // SharedPreferencesのインスタンス
    private SharedPreferences mPrefs;
   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit);
        // SharedPreferencesのインスタンスを取得
        mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
       
        // SharedPreferencesから"content"の値を取得
        String content = mPrefs.getString("content", "");
       
        // 日付 * を整形出力するためのフォーマッターを生成
        SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd (E)");
       
        // 今日のカレンダーを取得
        Calendar cal = Calendar.getInstance();
       
        // 今日の日付を文字列に変換
        String date = fmt.format(cal.getTime());
       
        TextView txtsubject = (TextView) findViewById(R.id.textView1);
        EditText txtcontent = (EditText) findViewById(R.id.editText1);
       
        txtsubject.setText(date);
        txtcontent.setText(content);
    }
   
    public void onClickButton(View view) {
        switch(view.getId()){
            case R.id.button1:{
                AlertDialog.Builder dlg = new AlertDialog.Builder(this);
                dlg.setTitle(getString(R.string.lbSaveTitle));
                dlg.setPositiveButton(getString(R.string.lbYes),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO 自動生成されたメソッド・スタブ
                            // 保存処理
                            EditText txtcontent = (EditText) findViewById(R.id.editText1);
                            String content = txtcontent.getText().toString();
                           
                            // 保存されたデータを確認
                            Log.d(TAG, "content=" + content);
                           
                            // Editorのインスタンスを取得
                            Editor editor = mPrefs.edit();
                           
                            // "content"に入力された文字列を設定
                            editor.putString("content", content);
                           
                            // 設定を反映する
                            editor.commit();
                           
                            finish();
                        }
                    });
                dlg.setNegativeButton(getString(R.string.lbNo),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO 自動生成されたメソッド・スタブ
                            // キャンセル
                        }
                    });
                dlg.show();
            }break;
            case R.id.button2:{
                finish();
            }break;
        }
    }
}

********************  edit.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="fill_parent"
    android:orientation="vertical" >
    <TextView
        android:text=""
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:fillViewport="true" >
        <EditText
            android:gravity="top"
            android:text=""
            android:id="@+id/editText1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
        </EditText>
    </ScrollView>
    <LinearLayout
        android:id="@+id/LinearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/lbSave"
            android:onClick="onClickButton" />
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/lbCancel"
            android:onClick="onClickButton" />
    </LinearLayout>
</LinearLayout>

********************  strings.xml  ********************
<resources>
    <string name="app_name">Study10</string>
    <string name="hello_world">hello</string>
    <string name="menu_settings">menu</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="title_memo">MemoActivity</string>
   
    <string name="lbSave">保存</string>
    <string name="lbCancel">キャンセル</string>
    <string name="lbSaveTitle">保存確認</string>
    <string name="lbYes">はい</string>
    <string name="lbNo">いいえ</string>
</resources>

********************  AndroidManifest.xml  ********************
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.lesson.study10"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="15" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MemoActivity"
            android:label="@string/title_memo">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

lesson13



********************  MainActivity.java  ********************
package jp.lesson.study10;
import android.os.Bundle;
import android.view.View;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit);
    }
    public void onClickButton(View view) {
        switch(view.getId()){
            case R.id.button1:{
                AlertDialog.Builder dlg = new AlertDialog.Builder(this);
                dlg.setTitle(getString(R.string.lbSaveTitle));
                dlg.setPositiveButton(getString(R.string.lbYes),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO 自動生成されたメソッド・スタブ
                            // 保存処理
                            finish();
                        }
                    });
                dlg.setNegativeButton(getString(R.string.lbNo),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO 自動生成されたメソッド・スタブ
                            // キャンセル
                        }
                    });
                dlg.show();
            }break;
            case R.id.button2:{
                finish();
            }break;
        }
    }
}

********************  edit.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="fill_parent"
    android:orientation="vertical" >
    <TextView
        android:text=""
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:fillViewport="true" >
        <EditText
            android:gravity="top"
            android:text=""
            android:id="@+id/editText1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
        </EditText>
    </ScrollView>
    <LinearLayout
        android:id="@+id/LinearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/lbSave"
            android:onClick="onClickButton" />
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/lbCancel"
            android:onClick="onClickButton" />
    </LinearLayout>
</LinearLayout>

********************  strings.xml  ********************
<resources>
    <string name="app_name">Study10</string>
    <string name="hello_world">hello</string>
    <string name="menu_settings">menu</string>
    <string name="title_activity_main">MainActivity</string>
   
    <string name="lbSave">保存</string>
    <string name="lbCancel">キャンセル</string>
    <string name="lbSaveTitle">保存確認</string>
    <string name="lbYes">はい</string>
    <string name="lbNo">いいえ</string>
</resources>


2012年9月28日金曜日

lesson09



********************  MainActivity.java  ********************
package jp.lesson.study10;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

********************  activity_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="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <EditText
        android:id="@+id/editText1"
        android:gravity="top"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>

********************  strings.xml  ********************
<resources>
    <string name="app_name">Study10</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
</resources>

2012年9月26日水曜日

動的にレイアウト 2

動的に配置する。
ボタンをクリックすると、エディットテキストを追加配置する。



        ********************  MainActivity.java  ********************
package jp.lesson.studyandroid;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

public class MainActivity extends Activity {
   
    private Activity me;
    private int i;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        me = this;
        final LinearLayout llayout = new LinearLayout(me);
        llayout.setOrientation(LinearLayout.VERTICAL);
        setContentView(llayout);
       
        Button btn = new Button(me);
        btn.setText("button");
        llayout.addView(btn);
       
        final int max=5;
        final EditText etxt[] = new EditText[max];

        btn.setOnClickListener(new View.OnClickListener() {
           
            public void onClick(View v) {
                if(i < max)
                {
                    etxt[i] = new EditText(me);
                    etxt[i].setText("editText_"+i);
                    llayout.addView(etxt[i]);
                    i++;
                }
            }
        });
    }
}

2012年9月25日火曜日

動的にレイアウト

動的に配置する。
ボタンをクリックすると、エディットテキストを追加配置する。




        ********************  MainActivity.java  ********************
package jp.lesson.studyandroid;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
   
    private Activity me;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        me = this;
        final LinearLayout llayout = new LinearLayout(me);
        llayout.setOrientation(LinearLayout.VERTICAL);
        setContentView(llayout);
       
        Button btn = new Button(me);
        btn.setText("button");
        llayout.addView(btn);
       
        btn.setOnClickListener(new View.OnClickListener() {
           
            public void onClick(View v) {
                EditText etxt = new EditText(me);
                etxt.setText("text_1");
                llayout.addView(etxt);
            }
        });
    }
}

2012年9月19日水曜日

ListView、アイテムクリック時

文字列のアイテムを表示する。
アイテムをクリックするとトースト表示する。



********************  MainActivity.java  ********************
package jp.lesson.studyandroid;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        ListView list = (ListView)findViewById(R.id.listView1);
        String[] items = {"クッキー","ケーキ","チョコレート"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, items);
        list.setAdapter(adapter);
       
        //リスト項目がクリックされた時の処理
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                ListView listv = (ListView) parent;
               
                // クリックされたアイテム取得
                String str = (String) listv.getItemAtPosition(position);
                Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
            }
        });
     }
}

********************  activity_main.xml  ********************
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        <ListView
            android:id="@+id/listView1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </ListView>
    </LinearLayout>

********************  list.xml  ********************
<?xml version="1.0" encoding="UTF-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
         />