对话框中自定义适配器在android系统 [英] Dialog in Custom Adapter in android
本文介绍了对话框中自定义适配器在android系统的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个复选框和一个textview.I希望当用户点击一行一个警报对话框弹出,用户输入data.I使用后在活动code和工作得很好一个自定义适配器:
I have one custom adapter that have one checkbox and one textview.I want when user clicked on one row one alert dialog pop up and user enter data.I use following code in activity and worked fine:
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View layout = inflater.inflate(R.layout.floordialog,
(ViewGroup) findViewById(R.id.floordialog));
floornum = (EditText) layout.findViewById(R.id.floordialog_floornumber);
unitnum = (EditText) layout.findViewById(R.id.floordialog_unitnumber);
Button next = (Button) layout.findViewById(R.id.floordialog_next);
Button cancel = (Button) layout.findViewById(R.id.floordialog_cancel);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("floors");
builder.setView(layout);
builder.setCancelable(false);
builder.create();
flooralert = builder.create();
flooralert.show();
next.setOnClickListener(this);
cancel.setOnClickListener(this);
但我不能在MyCustomAdapter使用,因为我不延伸活动,怎么能解决我的问题?
这是我的CustomAdapter
but i cant use in MyCustomAdapter because i Dont extend activity, how can solve my problem? and this is my CustomAdapter
public MyadapterForListFloor(Activity a, int textViewResourceId,
ArrayList<Integer> Floornum) {
super();
unitdialog = new UnitDialog();
this.entries = Floornum;
this.activity = a;
}
@Override
public int getCount() {
return entries.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.unitview, null);
holder = new ViewHolder();
holder.text = (TextView) v.findViewById(R.id.UnitTextview);
holder.checked = (CheckBox) v.findViewById(R.id.unitCheckbox);
v.setTag(holder);
holder.checked.setTag(entries.get(position));
holder.text.setTag(entries.get(position));
holder.checked.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ViewHolder obj = new ViewHolder();
obj.checked = (CheckBox) v.findViewById(R.id.unitCheckbox);
getid = (Integer) v.getTag();
if (isChecked(getid))
{
obj.checked.setChecked(true);
unitdialog.DialogForFloor();
Urban.selectedRow.add(getid);
}
else
Log.d("in else onclick", "**");
}
private boolean isChecked(int getid) {
for (int i = 0 ; i< Urban.selectedRow.size() ; i++)
{
if (Urban.selectedRow.get(i)== getid)
return false;
}
return true;
}
});
holder.text.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
holder.checked.performClick();
}
});
}
else
{
((ViewHolder) v.getTag()).checked.setTag(entries.get(position));
holder = (ViewHolder) v.getTag();
getid = (Integer) holder.checked.getTag();
Log.d("geti is", String.valueOf(getid));
if (checkBoxRefresh(getid))
holder.checked.setChecked(true);
else
holder.checked.setChecked(false);
}
final String str = String.valueOf(entries.get(position));
if (str != null) {
holder.text.setText(str);
}
return v;
}
private boolean checkBoxRefresh(int FloorNum) {
Log.d("urban.selectedrow.size is", String.valueOf(Urban.selectedRow.size()));
for (int i = 0 ; i < Urban.selectedRow.size() ; i++)
{
if (Urban.selectedRow.get(i) == FloorNum)
return true;
}
return false;
}
static class ViewHolder {
TextView text;
CheckBox checked;
}
}
推荐答案
试试这个:
LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
您已经通过你的语境 MyCustomAdapter
。
这篇关于对话框中自定义适配器在android系统的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文