Java 在Android中扩展AlertDialog.Builder
我想创建一个扩展Java 在Android中扩展AlertDialog.Builder,java,android,Java,Android,我想创建一个扩展AlertDialog.Builder的类: public class AlertBuilder extends AlertDialog.Builder { private MultiAdapter mAdapter; private ListView lv; private Activity mActivity; private Context mContext; private CheckedTxtView checkedItem;
AlertDialog.Builder
的类:
public class AlertBuilder extends AlertDialog.Builder {
private MultiAdapter mAdapter;
private ListView lv;
private Activity mActivity;
private Context mContext;
private CheckedTxtView checkedItem;
public AlertBuilder(Context context, Activity activity, final List<CheckedTxtView> mList) {
super(context);
this.mActivity = activity;
this.mContext = context;
this.setTitle("Test");
LayoutInflater inflater = activity.getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.main_filter, null);
this.setView(dialoglayout);
mAdapter = new MultiAdapter(context, mList);
lv = (ListView) dialoglayout.findViewById(R.id.list);
lv.setAdapter(mAdapter);
lv.setOnItemClickListener(new ItemClick());
}
class ItemClick implements OnItemClickListener {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
checkedItem = mAdapter.mItems.get(position);;
mAdapter.notifyDataSetChanged();
}
}
private class MultiAdapter extends ArrayAdapter<CheckedTxtView> {
private List<CheckedTxtView> mItems;
public MultiAdapter(Context context, List<CheckedTxtView> mList) {
super(context, R.layout.list2, mList);
this.mItems = mList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (convertView == null) {
LayoutInflater inflater = mActivity.getLayoutInflater();
row = inflater.inflate(R.layout.list2, parent, false);
} else
row = convertView;
CheckedTextView txt = (CheckedTextView) row.findViewById(R.id.label);
CheckedTxtView c = mItems.get(position);
System.out.println(c.item);
txt.setText(c.item);
if(checkedItem != null && checkedItem.item != null)
txt.setChecked(c.item.equals(checkedItem.item));
return row;
}
}
我可能会错过一些东西。您能帮助我吗?使用this或MainActivity.this代替getApplicationContext()
mAlertBuilder = new AlertBuilder(this, this, mList);
您不应在此处传递应用程序的上下文:
mAlertBuilder = new AlertBuilder(getApplicationContext(), this, mList);
因为活动本身就是上下文,所以应该将构造函数更改为只接受一个paramater-Activity,以后可以将其用作上下文对象 或者在更改
super(上下文)后尝试代码>至超级(活动)代码>因为您已经将活动上下文发送到AlertBuilder类
mAlertBuilder = new AlertBuilder(this, this, mList);
mAlertBuilder = new AlertBuilder(getApplicationContext(), this, mList);