Java 如何从ArrayAdapter解除警报对话框
我使用ArrayAdapter创建了带有单选按钮的singe choice AlertDialog。当选择“比率”时,是否可能错过该警报对话框?我在ArrayAdapter类holder.name.setOnClickListener中有OnClick listener,但我不知道如何实现它 警报对话框代码:Java 如何从ArrayAdapter解除警报对话框,java,android,android-arrayadapter,android-alertdialog,onclicklistener,Java,Android,Android Arrayadapter,Android Alertdialog,Onclicklistener,我使用ArrayAdapter创建了带有单选按钮的singe choice AlertDialog。当选择“比率”时,是否可能错过该警报对话框?我在ArrayAdapter类holder.name.setOnClickListener中有OnClick listener,但我不知道如何实现它 警报对话框代码: Builder builder = new Builder(serveris, useris, paswordas, BuildBuildingsViewActivity.this, US
Builder builder = new Builder(serveris, useris, paswordas, BuildBuildingsViewActivity.this, USER_AGENT);
ArrayList<AvailableBuildings> availableBuildings = builder.checkForPossibleBuildings(pastatas.getBuildingLink());
ArrayAdapter<AvailableBuildings> adapter = new AvailableBuildingsAdapter(BuildBuildingsViewActivity.this, R.layout.choice_main, availableBuildings, host, curdid, pastatas.getBuildingLink());
new AlertDialog.Builder(BuildBuildingsViewActivity.this)
.setSingleChoiceItems(adapter, 0, null)
.setPositiveButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
})
.show();
Builder=new Builder(服务器、用户、密码、buildingsviewActivity.this、用户\代理);
ArrayList availableBuildings=builder.checkForPossibleBuildings(pastatas.getBuildingLink());
ArrayAdapter=new AvailableBuildingAdapter(BuildingViewActivity.this,R.layout.choice_main,availableBuildings,host,curdid,pastatas.getBuildingLink());
新建AlertDialog.Builder(BuildingViewActivity.this)
.setSingleChoiceItems(适配器,0,null)
.setPositiveButton(“取消”,新建DialogInterface.OnClickListener()对话框){
public void onClick(对话框接口对话框,int whichButton){
dialog.dismise();
}
})
.show();
阵列适配器代码:
public class AvailableBuildingsAdapter extends ArrayAdapter<AvailableBuildings> {
public DBAdapterBuild db_build;
public AvailableBuildingsAdapter(Context context, int textViewResourceId,ArrayList<AvailableBuildings> availableBuildings, String host, String curdid, String aiksteles_link) {
super(context, textViewResourceId, availableBuildings);
this.context = context;
this.availableBuildings = new ArrayList<AvailableBuildings>();
this.availableBuildings.addAll(availableBuildings);
this.host = host;
this.curdid = curdid;
this.aiksteles_link = aiksteles_link;
db_build = new DBAdapterBuild(context, host);
}
private String host;
private Context context;
private String curdid;
private String aiksteles_link;
private ArrayList<AvailableBuildings> availableBuildings;
static class ViewHolder {
RadioButton name;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
if (convertView == null) {
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.choice_row, null);
holder = new ViewHolder();
holder.name = (RadioButton) convertView.findViewById(R.id.building_name);
convertView.setTag( holder );
holder.name.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
db_build.open();
RadioButton name = (RadioButton) v;
AvailableBuildings building = (AvailableBuildings) name.getTag();
Log.e( "Available: ", ""+building.getAvailable_title()+building.getAvailable_code());
Log.e( "Available: ", ""+db_build.insertTitle(1, building.getAvailable_title(), aiksteles_link, curdid, 0, 1, building.getAvailable_type(), "3", building.getAvailable_code()));
db_build.close();
}
});
} else {
// view already defined, retrieve view holder
holder = (ViewHolder) convertView.getTag();
}
AvailableBuildings building = availableBuildings.get(position);
if ( building == null ) {
}
holder.name.setText(building.getAvailable_title());
holder.name.setTag(building);
return convertView;
}
}
公共类可用BuildingAdapter扩展ArrayAdapter{
公共DBAdapterBuild db_build;
公共可用的BuildingAdapter(上下文上下文、int textViewResourceId、ArrayList可用的Buildings、字符串主机、字符串curdid、字符串aiksteles_链接){
super(上下文、textViewResourceId、availableBuildings);
this.context=上下文;
this.availableBuildings=new ArrayList();
this.availableBuildings.addAll(availableBuildings);
this.host=host;
this.curdid=curdid;
this.aiksteles_link=aiksteles_link;
db_build=新的DBAdapterBuild(上下文,主机);
}
私有字符串主机;
私人语境;
私人字符串curdid;
专用字符串aiksteles_链接;
私有ArrayList可用建筑;
静态类视窗夹{
单选按钮名称;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图)
{
视窗座;
if(convertView==null){
LayoutInflater vi=(LayoutInflater)getContext().getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
convertView=vi.充气(R.布局.选择行,空);
holder=新的ViewHolder();
holder.name=(单选按钮)convertView.findViewById(R.id.building\u name);
convertView.setTag(支架);
holder.name.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
db_build.open();
RadioButton名称=(RadioButton)v;
AvailableBuildings building=(AvailableBuildings)name.getTag();
Log.e(“可用:”,“+building.getAvailable_title()+building.getAvailable_code());
Log.e(“可用:”,“+db_build.insertTitle(1,building.getAvailable_title(),aiksteles_link,curdid,0,1,building.getAvailable_type(),“3”,building.getAvailable_code());
db_build.close();
}
});
}否则{
//视图已定义,检索视图持有者
holder=(ViewHolder)convertView.getTag();
}
AvailableBuildings building=AvailableBuildings.get(位置);
if(building==null){
}
holder.name.setText(building.getAvailable_title());
持有人名称、setTag(建筑物);
返回视图;
}
}
我通过传递到ArrayAdapter构造函数对话框对象来解决此问题,然后执行以下操作:
holder.name.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
db_build.open();
RadioButton name = (RadioButton) v;
AvailableBuildings building = (AvailableBuildings) name.getTag();
Log.e( "Available: ", ""+building.getAvailable_title()+building.getAvailable_code());
Log.e( "Available: ", ""+db_build.insertTitle(1, building.getAvailable_title(), aiksteles_link, curdid, 0, 1, building.getAvailable_type(), "3", building.getAvailable_code()));
db_build.close();
dia.dismiss();
}
});