2017-01-20 12 views
-2

私はリストビューにデータを追加するためのカスタムアダプタを使用していますResourceCursorAdapterを拡張しています。私はリストビューのボタンクリックイベントを処理する必要があります。すべてのリストには2つのボタンがあります。私はこれらのボタンをクリックしたときにどのように私はalertdailogを表示することができます...ListViewボタンをクリックしてalertdialog

マイListViewAdapter.javaコード...

class ListViewAdapter extends ResourceCursorAdapter { 


ListViewAdapter(Context context, int layout, Cursor c) { 
    super(context, layout, c); 
} 

@Override 
public void bindView(View view, Context context, Cursor cursor) { 
    TextView fname = (TextView) view.findViewById(R.id.fname); 
    TextView lname = (TextView) view.findViewById(R.id.lname); 
    TextView gender=(TextView)view.findViewById(R.id.gender); 
    Button edit=(Button)view.findViewById(R.id.button3); 
    Button start=(Button)view.findViewById(R.id.button4); 

    ImageView img=(ImageView)view.findViewById(R.id.profile_image); 
    fname.setText(cursor.getString(2)); 
    lname.setText(cursor.getString(3)); 
    gender.setText(cursor.getString(5)); 
    Bitmap bmp = BitmapFactory.decodeFile(cursor.getString(10)); 

    Bitmap thumbBitmap = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(cursor.getString(10)),320,240); 

    img.setImageBitmap(thumbBitmap); 

edit.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    AlertDialog.Builder builder = new  AlertDialog.Builder(MainActivity.this); 
    builder.setMessage("Hello") 
      .setPositiveButton("Start", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 

        Intent intent = new Intent(getApplicationContext(), Consultation.class); 

        startActivity(intent); 

       } 
      }) 
      .setNegativeButton("Edit", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 


        Intent intent = new Intent(getApplicationContext(), AddPatient.class); 

        startActivity(intent); 
       } 
      }) 
      .setNeutralButton("Cancel",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
       } 
      }); 
    AlertDialog d = builder.create(); 
    d.setTitle("Patient Details"); 
    d.show(); 
    d.setCancelable(false); 
} 
}); 
} 

コードがalertdialog上のエラーを示しています... は、どのように私はこの問題を解決することができますか。?

+1

MainActivity.itを渡す理由AlertDialog.Builderのコンテキストとして? – Kinjal

+0

あなたはどんなエラーを受け取っています –

+1

@KinjalはMainActivityの内部クラスとして書かれたアダプタかもしれません。 –

答えて

0

単純に次のように警告ダイアログにコンテキストを渡す:

class ListViewAdapter extends ResourceCursorAdapter { 
Context context; 

ListViewAdapter(Context context, int layout, Cursor c) { 
super(context, layout, c); 
this.context=context; 
} 

@Override 
public void bindView(View view, Context context, Cursor cursor) { 
TextView fname = (TextView) view.findViewById(R.id.fname); 
TextView lname = (TextView) view.findViewById(R.id.lname); 
TextView gender=(TextView)view.findViewById(R.id.gender); 
Button edit=(Button)view.findViewById(R.id.button3); 
Button start=(Button)view.findViewById(R.id.button4); 

ImageView img=(ImageView)view.findViewById(R.id.profile_image); 
fname.setText(cursor.getString(2)); 
lname.setText(cursor.getString(3)); 
gender.setText(cursor.getString(5)); 
Bitmap bmp = BitmapFactory.decodeFile(cursor.getString(10)); 

Bitmap thumbBitmap = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(cursor.getString(10)),320,240); 

img.setImageBitmap(thumbBitmap); 

edit.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
AlertDialog.Builder builder = new   AlertDialog.Builder(context); 
builder.setMessage("Hello") 
     .setPositiveButton("Start", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 

       Intent intent = new Intent(context.getApplicationContext(), Consultation.class); 

       startActivity(intent); 

      } 
     }) 
     .setNegativeButton("Edit", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 


       Intent intent = new Intent(context.getApplicationContext(), AddPatient.class); 

       startActivity(intent); 
      } 
     }) 
     .setNeutralButton("Cancel",new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
      } 
     }); 
AlertDialog d = builder.create(); 
d.setTitle("Patient Details"); 
d.show(); 
d.setCancelable(false); 
} 
}); 
} 
0

代わりにあなたのMainActivity.ThisgetApplicationContext(コード

class ListViewAdapter extends ResourceCursorAdapter { 
Context mContext; 
ListViewAdapter(Context context, int layout, Cursor c) { 
super(context, layout, c); 
this.mContext=context; 
} 
} 

edit.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 
builder.setMessage("Hello") 
     .setPositiveButton("Start", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 

       Intent intent = new Intent(mContext, Consultation.class); 

       startActivity(intent); 

      } 
     }) 
     .setNegativeButton("Edit", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 


       Intent intent = new Intent(mContext, AddPatient.class); 

       startActivity(intent); 
      } 
     }) 
     .setNeutralButton("Cancel",new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
      } 
     }); 
AlertDialog d = builder.create(); 
d.setTitle("Patient Details"); 
d.show(); 
d.setCancelable(false); 
} 
}); 

下にしてみてください)使用mContext

関連する問題