スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Android: ListViewをコーディングで作成

ListViewを、xmlのレイアウトを使わずにソースコードに自前で埋め込んで作成する方法です。
そのためには、BaseAdapterクラスを拡張して自前で作成する必要があります。
具体的には以下のとおり。でも、文字サイズとか、きちゃない。。

参考にさせてもらったサイト


-----------------------------------------------
1.プロジェクトの新規作成
-----------------------------------------------
Eclipseで、プロジェクトを新規作成します。
ちなみに、私は以下の設定で作りました。
Target Name:Google APIs(Platform=8)
アプリケーション名:TestListViewNoXML
パッケージ名:com.fxscore.testlistviewnoxml
Activity名:TestListViewNoXMLActivity
Minimum SDK:8
-----------------------------------------------
2.プログラム
-----------------------------------------------
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class TestListViewNoXMLActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // レイアウトをコーディングで作成
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        setContentView(linearLayout);
        
        // ListViewを作成
        ListView lv = new ListView(this);
        String teststr[] = {"str1","str2","str3"};
        lv.setAdapter(new TestAdapter(this, teststr));
        // ListViewをレイアウトにセット
        linearLayout.addView(lv);
        
        // リストビューのアイテムがクリックされた時の挙動
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                ListView lv = (ListView) parent;
                String item = (String) lv.getItemAtPosition(position);
                Toast.makeText(TestListViewNoXMLActivity.this, item, Toast.LENGTH_SHORT).show();
            }
        });        
    }
    
    // BaseAdapterクラスを拡張して自前で作成
    private class TestAdapter extends BaseAdapter{
        private Context con;
        private String[] data ;
        // コンストラクタ
        public TestAdapter(Context context, String[] str) {
            con = context;
            data = str ;
        }
        // 必要関数
        public int getCount() {return data.length;}
        public Object getItem(int position) {return data[position];}
        public long getItemId(int position) {return position;}
        // Listの中身を生成
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView tv;
            if(convertView == null){ tv = new TextView(con)    ; }
            else                   { tv = (TextView)convertView; }
            
            tv.setText(data[position]);
            tv.setTextSize(30) ; //文字サイズをここで調整
            return tv;
        }
    }
}
スポンサーサイト

トラックバック

コメント

コメントを残す

Secret



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。