• 締切済み

androidアプリのlistviewについて質問

現在Listviewにてテキストと画像を表示させています。 各行をクリックした時に、それぞれ別のActivityに移行させたいのですが、 初心者の為、悪戦苦闘しています。 わかる方がいましたら、アドバイスをお願い致します。 現在のソースは以下のとおりで、各行をタッチしても何も起こらない状況です。 public class CustomListViewActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Bitmap image; image = BitmapFactory.decodeResource(getResources(), R.drawable.tb); Bitmap image2; image2 = BitmapFactory.decodeResource(getResources(), R.drawable.tb2); Bitmap image3; image3 = BitmapFactory.decodeResource(getResources(), R.drawable.tb3); List<CustomData> objects = new ArrayList<CustomData>(); CustomData item1 = new CustomData(); item1.setImagaData(image); item1.setTextData("1行目のテキスト"); CustomData item2 = new CustomData(); item2.setImagaData(image2); item2.setTextData("2行目のテキスト"); CustomData item3 = new CustomData(); item3.setImagaData(image3); item3.setTextData("3行目のテキスト"); objects.add(item1); objects.add(item2); objects.add(item3); CustomAdapter customAdapater = new CustomAdapter(this, 0, objects); ListView listView = (ListView)findViewById(R.id.list); listView.setAdapter(customAdapater); } protected void onListItemClick(ListView l, View v, int position, long id) { switch (position) { case 0: startActivity(new Intent(this, ItemDetailActivity.class)); break; case 1: startActivity(new Intent(this, ItemDetailActivity.class)); break; case 2: startActivity(new Intent(this, ItemDetailActivity.class)); break; } } }

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

noname#177743
noname#177743
回答No.1

コードをざっと拝見しましたが……。onListItemClickでイベント処理したいのですよね? では、Activityではなく、ListActivityを継承しないとダメでは?

関連するQ&A

  • listviewの画面遷移について

    初心者です。 現在カスタムlistviewにて各行に画像とテキストを表示させており、各行をクリックした時に別のActivityに移行させたいのですが、下記ソースにてクリックしても何も動作がしない状態です。 どうかご指南をお願い致します。 public class CustomListViewActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Bitmap image; image = BitmapFactory.decodeResource(getResources(), R.drawable.tb); Bitmap image2; image2 = BitmapFactory.decodeResource(getResources(), R.drawable.tb2); Bitmap image3; image3 = BitmapFactory.decodeResource(getResources(), R.drawable.tb3); List<CustomData> objects = new ArrayList<CustomData>(); CustomData item1 = new CustomData(); item1.setImagaData(image); item1.setTextData("1行目のテキスト"); CustomData item2 = new CustomData(); item2.setImagaData(image2); item2.setTextData("2行目のテキスト"); CustomData item3 = new CustomData(); item3.setImagaData(image3); item3.setTextData("3行目のテキスト"); objects.add(item1); objects.add(item2); objects.add(item3); CustomAdapter customAdapater = new CustomAdapter(this, 0, objects); ListView listView = (ListView)findViewById(R.id.list); listView.setAdapter(customAdapater); } protected void onListItemClick(ListView l, View v, int position, long id) { switch (position) { case 0: startActivity(new Intent(this, Item1Activity.class)); break; case 1: startActivity(new Intent(this, Item2Activity.class)); break; case 2: startActivity(new Intent(this, Item3Activity.class)); break; } } }

  • Androidアプリ開発に関する質問です。

    Androidアプリ開発に関する質問です。 Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.xxx); という記述でres/drawable-hdpi/xxx.png の画像を持ってくることができると思うのですが、 データベースに保存したString型のxxxを使って動的に画像を表示する方法が分かりません。 データベースから画像名を持ってくる前に、String型の変数(仮にstrとする)に画像名を入れて、 Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.str); と記述してもstrを変数として扱ってくれません。 どなたかres/drawable/の画像を動的に持ってくる方法を教えて頂けないでしょうか。

    • ベストアンサー
    • Java
  • 【Flash馬鹿のJava】連番画像ファイルの読込について

    【Flash馬鹿のJava】連番画像ファイルの読込について 対象バージョン:J2SE1.6 / Android1.6 はじめましてFlash馬鹿です。Java初心者です。 連番画像ファイルを一気に読み込みたいのですが、方法が分かりません。 Flashでいうところの for(i=1;i<100;i++){ this["loadmc" + i].loadMovie("image" + i + "png") } みたいなことがしたいです。 private Bitmap image1; private Bitmap image2; private Bitmap image3; image1 = BitmapFactory.decodeResource(r, R.drawable.image1); image2 = BitmapFactory.decodeResource(r, R.drawable.image2); image3 = BitmapFactory.decodeResource(r, R.drawable.image3); だといけますが private ArrayList<Bitmap> image; image.add(BitmapFactory.decodeResource(r, R.drawable.image1)); image.add(BitmapFactory.decodeResource(r, R.drawable.image2)); image.add(BitmapFactory.decodeResource(r, R.drawable.image3)); にするとAndroid1.6のシミュレータが落ちます。 また、連番の画像リソースを指定する方法("image" + i + "png")も分かりませんので 教えていただけると幸いです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • androidアプリが強制終了してしまいます。

    オプションメニューボタンの「MENU_ITEM0」を押すと、他の機能が呼び出されずに強制終了でエラーになってしまいます。 ・呼び出すソースファイルです。 「public class CogoterActivity extends Activity { //メニューアイテムID private static final int MENU_ITEM0=0, MENU_ITEM1=1; //アクティビティ起動時に呼ばれる @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); requestWindowFeature(Window.FEATURE_NO_TITLE); //リスト要素の情報群の生成 List<ListItem> items=new ArrayList<ListItem>(); for (int i=0;i<50;i++) { items.add(new ListItem(res2bmp(this,R.drawable.icon),"項目"+i)); } //リストビューの設定 ListView listView=new ListView(this); listView.setScrollingCacheEnabled(false); listView.setAdapter(new ListAdapter(this,items)); setContentView(listView); new TextView(this); } public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); //メニューアイテム0の追加 MenuItem item0=menu.add(0,MENU_ITEM0,0,"ぶつぶつ"); item0.setIcon(android.R.drawable.ic_menu_edit); //メニューアイテム1の追加 MenuItem item1=menu.add(0,MENU_ITEM1,0,"ぶくぶく"); item1.setIcon(android.R.drawable.ic_menu_more); return true; } //メニューアイテム選択イベントの処理 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_ITEM0: Intent intent = new Intent(this, cogoter.project.MyActivity.class); startActivity(intent); return true; case MENU_ITEM1: showDialog(this,"","ぶくぶくを押した"); return true; } return true; } //ダイアログの表示 private static void showDialog(Context context,String title,String text) { AlertDialog.Builder ad=new AlertDialog.Builder(context); ad.setTitle(title); ad.setMessage(text); ad.setPositiveButton("OK",null); ad.show(); } //リソース→ビットマップ public static Bitmap res2bmp(Context context,int resID) { return BitmapFactory.decodeResource( context.getResources(),resID); } }」 ・呼び出されるソースコード 「public class MyActivity extends Activity implements View.OnClickListener { private final static int WC=LinearLayout.LayoutParams.WRAP_CONTENT; private final static int FP=LinearLayout.LayoutParams.FILL_PARENT; private EditText editText;//エディットテキスト //アクティビティ起動時に呼ばれる @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); requestWindowFeature(Window.FEATURE_NO_TITLE); //戻り値の指定(6) setResult(Activity.RESULT_CANCELED); //インテントからのパラメータ取得(5) String text=""; Bundle extras=getIntent().getExtras(); if (extras!=null) text=extras.getString("text"); //レイアウトの生成 LinearLayout layout=new LinearLayout(this); layout.setBackgroundColor(Color.rgb(255,255,255)); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //OKボタンの生成 Button button=new Button(this); button.setText("OK"); button.setOnClickListener(this); button.setLayoutParams(new LinearLayout.LayoutParams(WC,WC)); layout.addView(button); //エディットテキストの生成 editText=new EditText(this); editText.setText(text); editText.setLayoutParams(new LinearLayout.LayoutParams(FP,WC)); layout.addView(editText); } //ボタンクリック時に呼ばれる public void onClick(View v) { //戻り値の指定(6) Intent intent =new Intent(); intent.putExtra("text",editText.getText().toString()); setResult(Activity.RESULT_OK,intent); //アクティビティの終了(7) finish(); } }」

  • java-Eclipseエラー質問

    Eclips SDKを使用して、Androidのアプリの開発練習をしています。 エラーが出てしまい解決方法を数日間検索しているのですが、 見当たらず、わからないので、質問させていただきます。 バージョンは Eclipse SDK Version: 4.2.2 Build id: M20130204-1200 を使用しています。 エラーは m_Number[0] = BitmapFactory.decodeResource(r, R.drawable.num1); m_Number[1] = BitmapFactory.decodeResource(r, R.drawable.num2); m_Number[2] = BitmapFactory.decodeResource(r, R.drawable.num3); m_Number[3] = BitmapFactory.decodeResource(r, R.drawable.num4);   ・・・・・ の位置で、 メソッド decodeResource(Resources, Object) は型 String で未定義です。 と表示されます。 ソースは以下のように作っています。 package com.example.puzzle15; import android.os.Bundle; import android.app.Activity; import android.view.Menu; //public class MainActivity extends Activity { // @Override // protected void onCreate(Bundle savedInstanceState) { // super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); // } // @Override // public boolean onCreateOptionsMenu(Menu menu) { // // Inflate the menu; this adds items to the action bar if it is present. // getMenuInflater().inflate(R.menu.main, menu); // return true; // } //} //class : PuzzleView //Abstract : パズルを表示する public class PuzzleView extends SurfaceView implements SurfaceHolder.Callback{ private static final String BitmapFactory = null; private Bitmap m_Number[] = new Bitmap[15]; private SurfaceHolder m_holder; private final int m_PosX[] = { 0, 80, 160, 240 }; private final int m_PosY[] = { 0, 80, 160, 240 }; private final int m_IdxX[] = {0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3}; private final int m_IdxY[] = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3}; // コンストラクタ // サーフェースホルダーとイメージの準備 public PuzzleView(Context context) { super(); Resources r = getResources(); // 画像リソースの取得 m_Number[0] = BitmapFactory.decodeResource(r, R.drawable.num1); m_Number[1] = BitmapFactory.decodeResource(r, R.drawable.num2); m_Number[2] = BitmapFactory.decodeResource(r, R.drawable.num3); m_Number[3] = BitmapFactory.decodeResource(r, R.drawable.num4); m_Number[4] = BitmapFactory.decodeResource(r, R.drawable.num5); m_Number[5] = BitmapFactory.decodeResource(r, R.drawable.num6); m_Number[6] = BitmapFactory.decodeResource(r, R.drawable.num7); m_Number[7] = BitmapFactory.decodeResource(r, R.drawable.num8); m_Number[8] = BitmapFactory.decodeResource(r, R.drawable.num9); m_Number[9] = BitmapFactory.decodeResource(r, R.drawable.num10); m_Number[10] = BitmapFactory.decodeResource(r, R.drawable.num11); m_Number[11] = BitmapFactory.decodeResource(r, R.drawable.num12); m_Number[12] = BitmapFactory.decodeResource(r, R.drawable.num13); m_Number[13] = BitmapFactory.decodeResource(r, R.drawable.num14); m_Number[14] = BitmapFactory.decodeResource(r, R.drawable.num15); // サーフェースホルダーの生成 m_holder = getHolder(); m_holder.addCallback(this);// サーフェース生成時と変更時、終了時に呼び出してもらう } private SurfaceHolder getHolder() { // TODO Auto-generated method stub return null; } private Resources getResources() { // TODO Auto-generated method stub return null; } //SurfaceCreated //サーフェース生成時処理 public void surfaceCreated(SurfaceHolder holder){ } //SurfaceChanged //サーフェース変更時処理 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { int m_XOrg; int m_YOrg; boolean m_bLand; if( height > width ){ m_XOrg = (width - 320) / 2; m_YOrg = 32; m_bLand = false; } else{ m_XOrg = 32; m_YOrg = (height - 320 ) / 2; m_bLand = true; } m_holder = holder; Thread m_Thread = new Thread((Runnable) this); m_Thread.start(); updateView(); Canvas canvas = holder.lockCanvas(); canvas.drawColor(Color.BLACK); for( int i = 0 ; i < 15 ; i++ ){ canvas.drawBitmap(m_Number[i], m_PosX[m_IdxX[i]], m_PosY[m_IdxY[i]], null); } holder.unlockCanvasAndPost(canvas); } private void updateView() { // TODO Auto-generated method stub } // SurfaceDestroyed // サーフェース終了時処理 public void surfaceDestroyed(SurfaceHolder holder){ } } よろしくお願いします。

    • ベストアンサー
    • Java
  • クリックして画像を変え、一定時間経過後もとに戻す

    androidアプリを作成している初心者です。 画像をクリックすると画像が変わるようになるようにしたいと思ってます。 画像を変えるところまではできたのですが、 一定時間経過後にもとに戻すにはどうしたらいいかがわかりません。 以下、ソースコード。 public class MainActivity extends Activity { ImageView iv; Bitmap bmp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); ll.setOrientation(LinearLayout.HORIZONTAL); ll.setGravity(Gravity.CENTER); setContentView(ll); //画像表示 iv = new ImageView(this); bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ikari); iv.setImageBitmap(bmp); ll.addView(iv); //画像をクリックした時に関数を呼び出す iv.setOnClickListener(new img_ac()); } //画像を変える class img_ac implements OnClickListener { public void onClick(View v) { ImageView tmp = (ImageView) v; tmp.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)); } } } 一定時間経過後に元の画像に戻すには、どのようにしたら良いのでしょうか。

    • ベストアンサー
    • Java
  • androidのintentの使い方

    // //問題:LISTを押すと、エラーが出る、Intentの問題ですか? // public class FirstActivity extends Activity { // onCreateメソッド(画面初期表示イベントハンドラ) private static final String TAG ="[HelloWorld]"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// スーパークラスのonCreateメソッド呼び出し setContentView(R.layout.firstlayout);// レイアウト設定ファイルの指定 ListView listview = (ListView) findViewById(R.id.fruitlist); // ListViewオブジェクト取得 listview.setOnItemClickListener(new ListItemClickListener()); // ListViewオブジェクトにクリックリスナーを関連付け } // アイテムクリックリスナー定義 class ListItemClickListener implements OnItemClickListener { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {// onItemClickメソッド(値選択時イベントハンドラ) ListView listview = (ListView) parent; // ListViewオブジェクト取得 String item = (String) listview.getItemAtPosition(position);// 選択された値取得 Log.d(item, TAG); Intent intent = new Intent(FirstActivity.this,SecondActivity.class);// インテントの生成(呼び出すクラスの指定) startActivity(intent);// 次のアクティビティの起動 } } } -------------------------------------------------------------------------- public class SecondActivity extends Activity { // onCreateメソッド(画面初期表示イベントハンドラ) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // スーパークラスのonCreateメソッド呼び出し setContentView(R.layout.main);// レイアウト設定ファイルの指定 } }

    • ベストアンサー
    • Java
  • androidで読んだ画像サイズが小さくなります

    アンドロイドで画像を読み込んむと画像サイズが元のサイズより縮小されてしまいます。 画像の元の大きさで読み込むことはできないでしょうか? どなかたよろしければ、ご教授下さい。 256×256の画像を読み込み、以下のソースで確認してみました。 Bitmap bmp1 = BitmapFactory.decodeResource(getResources(), R.drawable.画像の名前); Log.d("tag","w="+bmp1.getWidth()); Log.d("tag","h="+bmp1.bmp1.getHeight()); 結果 w=171 h=171 私は w=256 h=256 のまま読み込みして画面に貼り付けたいのですが。。。

  • Android用ゲームを作っています。

    現在Androidゲームを作っているのですが、現在時間を取得し、時刻を表示したり、背景画像などを変えたりしたいのですがどのように取得し、表示させればいいのでしょうか?ソースコードは ・MainActivity.java package andorid.eample.game2; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.os.Bundle; import android.app.Activity; import android.widget.LinearLayout; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout l = new LinearLayout(this); setContentView(l); l.addView(new PView(this, null, 0)); } } ・PView.java package andorid.eample.game2; import android.annotation.SuppressLint;4 import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; import android.widget.Toast; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import android.content.res.Resources; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.text.format.Time; import android.media.MediaPlayer; public class PView extends View{ Paint paint = new Paint(); Date date = new Date(); int flg = 0; int charaX =250; int charaY = 250; Resources res = this.getContext().getResources(); Bitmap bg = BitmapFactory.decodeResource(res, R.drawable.bg1); Bitmap chara = BitmapFactory.decodeResource(res, R.drawable.charan); Bitmap charaT = BitmapFactory.decodeResource(res, R.drawable.charat); Bitmap box= BitmapFactory.decodeResource(res, R.drawable.boxt); //音楽読み込み MediaPlayer se = MediaPlayer.create(getContext(),R.raw.ehehe); public PView(Context context,AttributeSet attrs,int defStyle) { super(context,attrs); // TODO 自動生成されたコンストラクター・スタブ } @SuppressLint("DrawAllocation") @Override protected void onDraw(Canvas c){ c.drawBitmap(bg,0,100,paint); if(flg == 0) { c.drawBitmap(chara,charaX,charaY,paint); } if(flg == 1) { c.drawBitmap(charaT,charaX,charaY,paint); c.drawBitmap(box,50,200,paint); } invalidate(); } public boolean onTouchEvent(MotionEvent me) { //タッチされた時 if(me.getAction() == MotionEvent.ACTION_DOWN) { if(me.getAction() == MotionEvent.ACTION_DOWN) { if(flg == 0) { flg = 1; se.start(); } else{ flg =0; } } } return false; } } このような感じになっています どうかアドバイスをお願いします。

    • ベストアンサー
    • Java
  • Androidアプリ Listviewが

    アドバイスください。初心者です。Listviewを作りたいだけなんです。”データがありません”と表示されてしまいます・・。 ●layout(.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" > <ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <TextView android:id="@+id/android:empty" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="データが存在しません"/> </LinearLayout> ●listview(.java) import android.app.Activity; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; //ListActivityを継承 import com.example.yamato.myapplication001.R; public class listview extends ListActivity { private String[] items = { "a10", "a11", "a21", "b10" }; //(2) // private String[] items = {};(2) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //リストビューを含むレイアウト指定(1) setContentView(R.layout.activity_main_activity001); // ArrayAdapterオブジェクトの生成 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items); // Adapterの指定 setListAdapter(adapter); // ListActivity内部にあるListViewオブジェクトを取得する場合 ListView listView = getListView(); // ListViewオブジェクトを取得したので以下のメソッド等が利用できる // 選択する要素の位置の指定 listView.setSelection(3); } } ソースは参考本からです。

専門家に質問してみよう