【问题标题】:ListView Button click alertdialogListView 按钮单击警报对话框
【发布时间】:2017-01-20 05:59:25
【问题描述】:

我正在使用自定义适配器将数据添加到扩展 ResourceCursorAdapter 的列表视图。我需要处理列表视图中的按钮单击事件。每个列表包含 2 个按钮。单击这些按钮时如何显示 alertdailog...

我的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 上显示错误... 我该如何解决这个问题?

【问题讨论】:

  • 为什么在 AlertDialog.Builder 中将 MainActivity.this 作为上下文传递?
  • 你遇到了什么错误
  • @Kinjal 可能是适配器被写在 MainActivity 作为内部类。

标签: android listview button


【解决方案1】:

只需像这样将上下文传递给警报对话框:

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);
}
} );
}

【讨论】:

    【解决方案2】:

    请试试下面的代码

    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);
     }
    });
    

    您的 MainActivity.ThisgetApplicationContext() 使用 mContext

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2011-08-08
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多