| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Android スケルトン ListActivity」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
==Android スケルトン ListActivity==
+
==[[Android スケルトン ListActivity]]==
[[Android][Android スケルトン]]
+
[[Android]] | [[Android スケルトン]] |
*ListActivity を利用するスケルトン
+
*ListActi[[vi]]ty を利用するスケルトン
 
*メニューとコンテキストメニューを利用
 
*メニューとコンテキストメニューを利用
  
 
===イメージ===
 
===イメージ===
 
====メニュー====
 
====メニュー====
[[File:0116_list_activity01.jpg]]
+
{{ref_image list_acti[[vi]]ty01.jpg}}
 
====コンテキストメニュー====
 
====コンテキストメニュー====
[[File:0117_list_activity02.jpg]]
+
{{ref_image list_acti[[vi]]ty02.jpg}}
  
===Tips===
+
===[[Tips]]===
 
====背景色の設定をしても、スクロールすると黒くなってしまう。====
 
====背景色の設定をしても、スクロールすると黒くなってしまう。====
 
*[http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:scrollingCache ListView#scrollingChache]をfalseに設定する。
 
*[http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:scrollingCache ListView#scrollingChache]をfalseに設定する。
 
  android:scrollingCache="false"
 
  android:scrollingCache="false"
===Activity===
+
===Acti[[vi]]ty===
  
 
  package info.typea.handrawroid;
 
  package info.typea.handrawroid;
21行目: 21行目:
 
  import java.util.List;
 
  import java.util.List;
 
   
 
   
  import android.app.ListActivity;
+
  import android.app.ListActi[[vi]]ty;
 
  import android.content.Context;
 
  import android.content.Context;
 
  import android.os.Bundle;
 
  import android.os.Bundle;
  import android.view.ContextMenu;
+
  import android.view.Context[[Menu]];
  import android.view.LayoutInflater;
+
  import android.[[vi]]ew.LayoutInflater;
  import android.view.Menu;
+
  import android.view.[[Menu]];
  import android.view.MenuItem;
+
  import android.view.[[Menu]]Item;
  import android.view.View;
+
  import android.[[vi]]ew.View;
  import android.view.ViewGroup;
+
  import android.[[vi]]ew.ViewGroup;
  import android.view.ContextMenu.ContextMenuInfo;
+
  import android.view.Context[[Menu]].Context[[Menu]]Info;
 
  import android.widget.ArrayAdapter;
 
  import android.widget.ArrayAdapter;
 
  import android.widget.TextView;
 
  import android.widget.TextView;
37行目: 37行目:
 
   * @author piroto
 
   * @author piroto
 
   */
 
   */
  public class NoteListActivity extends ListActivity {
+
  public class NoteListActi[[vi]]ty extends ListActi[[vi]]ty {
 
      
 
      
     private static final int MENU_NEW        = Menu.FIRST;
+
     private static final int MENU_NEW        = [[Menu]].FIRST;
     private static final int MENU_CLOSE      = Menu.FIRST + 1;
+
     private static final int MENU_CLOSE      = [[Menu]].FIRST + 1;
     private static final int MENU_PREFERENCES = Menu.FIRST + 2;
+
     private static final int MENU_PREFERENCES = [[Menu]].FIRST + 2;
 
      
 
      
     private static final int MENU_EDIT        = Menu.FIRST + 3;
+
     private static final int MENU_EDIT        = [[Menu]].FIRST + 3;
     private static final int MENU_SHARE      = Menu.FIRST + 4;
+
     private static final int MENU_SHARE      = [[Menu]].FIRST + 4;
     private static final int MENU_DELETE      = Menu.FIRST + 5;
+
     private static final int MENU_DELETE      = [[Menu]].FIRST + 5;
 
      
 
      
 
     @Override
 
     @Override
 
     public void onCreate(Bundle savedInstanceState) {
 
     public void onCreate(Bundle savedInstanceState) {
 
         super.onCreate(savedInstanceState);
 
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
+
         setContentView([[R]].layout.main);
 
          
 
          
 
         // コンテキストメニューを登録
 
         // コンテキストメニューを登録
         registerForContextMenu(getListView());
+
         registerForContext[[Menu]](getListView());
 
          
 
          
 
         List<String> items = new ArrayList<String>();
 
         List<String> items = new ArrayList<String>();
62行目: 62行目:
 
         // Dummy Data Create To
 
         // Dummy Data Create To
 
          
 
          
         NoteAdapter adapter = new NoteListActivity.NoteAdapter(this, R.layout.row_note, items);
+
         NoteAdapter adapter = new NoteListActi[[vi]]ty.NoteAdapter(this, R.layout.row_note, items);
 
         setListAdapter(adapter);
 
         setListAdapter(adapter);
 
     }
 
     }
73行目: 73行目:
 
   
 
   
 
     @Override
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
+
     public boolean onCreateOptions[[Menu]]([[Menu]] menu) {
         super.onCreateOptionsMenu(menu);
+
         super.onCreateOptions[[Menu]](menu);
 
          
 
          
         menu.add(0,MENU_NEW,0,R.string.mnu_edit_new)
+
         menu.add(0,MENU_NEW,0,[[R]].string.mnu_edit_new)
             .setIcon(android.R.drawable.ic_menu_add);
+
             .setIcon(android.[[R]].drawable.ic_menu_add);
         menu.add(0,MENU_PREFERENCES,0,R.string.mnu_preferences)
+
         menu.add(0,MENU_P[[R]]EFE[[R]]ENCES,0,[[R]].string.mnu_preferences)
             .setIcon(android.R.drawable.ic_menu_preferences);
+
             .setIcon(android.[[R]].drawable.ic_menu_preferences);
         menu.add(0,MENU_CLOSE,0,R.string.mnu_close)
+
         menu.add(0,MENU_CLOSE,0,[[R]].string.mnu_close)
             .setIcon(android.R.drawable.ic_menu_close_clear_cancel);
+
             .setIcon(android.[[R]].drawable.ic_menu_close_clear_cancel);
 
         return true;
 
         return true;
 
     }
 
     }
 
   
 
   
 
     @Override
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
+
     public boolean onOptionsItemSelected([[Menu]]Item item) {
 
         switch (item.getItemId()) {
 
         switch (item.getItemId()) {
 
         case MENU_NEW:
 
         case MENU_NEW:
 
             break;
 
             break;
         case MENU_PREFERENCES:
+
         case MENU_P[[R]]EFE[[R]]ENCES:
 
             break;
 
             break;
 
         case MENU_CLOSE:
 
         case MENU_CLOSE:
101行目: 101行目:
 
      
 
      
 
     @Override
 
     @Override
     public void onCreateContextMenu(ContextMenu menu, View v,
+
     public void onCreateContext[[Menu]](Context[[Menu]] menu, View v,
             ContextMenuInfo menuInfo) {
+
             Context[[Menu]]Info menuInfo) {
         super.onCreateContextMenu(menu, v, menuInfo);
+
         super.onCreateContext[[Menu]](menu, v, menuInfo);
         menu.add(0, MENU_EDIT,    0, R.string.mnu_edit);
+
         menu.add(0, MENU_EDIT,    0, [[R]].string.mnu_edit);
         menu.add(0, MENU_SHARE,  0, R.string.mnu_share);
+
         menu.add(0, MENU_SHA[[R]]E,  0, [[R]].string.mnu_share);
         menu.add(0, MENU_DELETE,  0, R.string.mnu_delete);
+
         menu.add(0, MENU_DELETE,  0, [[R]].string.mnu_delete);
 
     }
 
     }
 
      
 
      
 
     @Override
 
     @Override
     public boolean onContextItemSelected(MenuItem item) {
+
     public boolean onContextItemSelected([[Menu]]Item item) {
 
         switch(item.getItemId()) {
 
         switch(item.getItemId()) {
 
         case MENU_EDIT:
 
         case MENU_EDIT:
 
             break;
 
             break;
         case MENU_SHARE:
+
         case MENU_SHA[[R]]E:
 
             break;
 
             break;
 
         case MENU_DELETE:
 
         case MENU_DELETE:
130行目: 130行目:
 
         private List<String> items;
 
         private List<String> items;
 
   
 
   
         public NoteAdapter(Context context, int textViewResourceId, List<String> items) {
+
         public NoteAdapter(Context context, int textView[[R]]esourceId, List<String> items) {
             super(context, textViewResourceId, items);
+
             super(context, textView[[R]]esourceId, items);
 
             this.items = items;
 
             this.items = items;
 
         }
 
         }
 
         @Override
 
         @Override
 
         public View getView(int position, View convertView, ViewGroup parent) {
 
         public View getView(int position, View convertView, ViewGroup parent) {
             View view = convertView;
+
             View [[vi]]ew = convertView;
             if (view == null) {
+
             if ([[vi]]ew == null) {
                 LayoutInflater lif = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
                 LayoutInflater lif = (LayoutInflater)getContext().getSystemSer[[vi]]ce(Context.LAYOUT_INFLATER_SERVICE);
                 view = lif.inflate(R.layout.row_note, null);
+
                 [[vi]]ew = lif.inflate(R.layout.row_note, null);
 
             }
 
             }
 
             String item = this.items.get(position);
 
             String item = this.items.get(position);
 
             if (item != null) {
 
             if (item != null) {
                 TextView tv = (TextView)view.findViewById(R.id.txt_note_title);
+
                 TextView tv = (TextView)[[vi]]ew.findViewById(R.id.txt_note_title);
 
                 tv.setText(item);
 
                 tv.setText(item);
 
             }
 
             }
             return view;
+
             return [[vi]]ew;
 
         }
 
         }
 
     }
 
     }
190行目: 190行目:
 
  <?xml version="1.0" encoding="utf-8"?>
 
  <?xml version="1.0" encoding="utf-8"?>
 
  <resources>
 
  <resources>
  <string name="hello">Hello World, NoteListActivity!</string>
+
  <string name="hello">Hello World, NoteListActi[[vi]]ty!</string>
 
  <string name="app_name">Handrawroid</string>
 
  <string name="app_name">Handrawroid</string>
 
  <string name="mnu_edit_new">新規作成</string>
 
  <string name="mnu_edit_new">新規作成</string>

2020年2月16日 (日) 04:21時点における最新版

Android スケルトン ListActivity

Android | Android スケルトン |

  • ListActivity を利用するスケルトン
  • メニューとコンテキストメニューを利用

イメージ

メニュー

{{ref_image list_activity01.jpg}}

コンテキストメニュー

{{ref_image list_activity02.jpg}}

Tips

背景色の設定をしても、スクロールすると黒くなってしまう。

android:scrollingCache="false"

Activity

package info.typea.handrawroid;

import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.TextView;

/**
 * @author piroto
 */
public class NoteListActivity extends ListActivity {
    
    private static final int MENU_NEW         = Menu.FIRST;
    private static final int MENU_CLOSE       = Menu.FIRST + 1;
    private static final int MENU_PREFERENCES = Menu.FIRST + 2;
    
    private static final int MENU_EDIT        = Menu.FIRST + 3;
    private static final int MENU_SHARE       = Menu.FIRST + 4;
    private static final int MENU_DELETE      = Menu.FIRST + 5;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // コンテキストメニューを登録
        registerForContextMenu(getListView());
        
        List<String> items = new ArrayList<String>();
        // Dummy Data Create From
        for (int i=0; i<10; i++) {
            items.add("dummy item " + i);
        }
        // Dummy Data Create To
        
        NoteAdapter adapter = new NoteListActivity.NoteAdapter(this, R.layout.row_note, items);
        setListAdapter(adapter);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        
        menu.add(0,MENU_NEW,0,R.string.mnu_edit_new)
            .setIcon(android.R.drawable.ic_menu_add);
        menu.add(0,MENU_PREFERENCES,0,R.string.mnu_preferences)
            .setIcon(android.R.drawable.ic_menu_preferences);
        menu.add(0,MENU_CLOSE,0,R.string.mnu_close)
            .setIcon(android.R.drawable.ic_menu_close_clear_cancel);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case MENU_NEW:
            break;
        case MENU_PREFERENCES:
            break;
        case MENU_CLOSE:
            break;
        default:
            break;
        }
        return true;
    }
    
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, MENU_EDIT,    0, R.string.mnu_edit);
        menu.add(0, MENU_SHARE,   0, R.string.mnu_share);
        menu.add(0, MENU_DELETE,  0, R.string.mnu_delete);
    }
    
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch(item.getItemId()) {
        case MENU_EDIT:
            break;
        case MENU_SHARE:
            break;
        case MENU_DELETE:
            break;
        default:
            break;
        }
        return true;
    }

    /**
     * @author piroto
     */
    public static class NoteAdapter extends ArrayAdapter<String> {
        private List<String> items;

        public NoteAdapter(Context context, int textViewResourceId, List<String> items) {
            super(context, textViewResourceId, items);
            this.items = items;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            if (view == null) {
                LayoutInflater lif = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                view = lif.inflate(R.layout.row_note, null);
            }
            String item = this.items.get(position);
            if (item != null) {
                TextView tv = (TextView)view.findViewById(R.id.txt_note_title);
                tv.setText(item);
            }
            return view;
        }
    }
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ListView android:id="@+id/android:list" 
              android:layout_height="wrap_content" 
              android:layout_width="fill_parent">
              
    </ListView>
    <TextView android:text="@string/msg_no_items" 
              android:id="@+id/android:empty" 
              android:layout_width="wrap_content" 
              android:layout_height="wrap_content"
              android:textSize="20sp">
    </TextView>
</LinearLayout>

row_note.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">
    <TextView android:text="" 
              android:id="@+id/txt_note_title" 
              android:layout_width="fill_parent" 
              android:layout_height="fill_parent" 
              android:textSize="24sp" 
              >
    </TextView>
</LinearLayout>

string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, NoteListActivity!</string>
<string name="app_name">Handrawroid</string>
<string name="mnu_edit_new">新規作成</string>
<string name="msg_no_items">アイテムがありません</string>
<string name="mnu_preferences">設定</string>
<string name="mnu_close">終了</string>
<string name="mnu_edit">編集</string>
<string name="mnu_share">共有</string>
<string name="mnu_delete">削除</string>
</resources>