java将数据从customdialog类传输到父类
在这里,我通过父活动调用customdialog。。其中,由于对话框位于另一个活动中,因此包含listview。。。从该对话框中,我从listview传输所选内容。。但是没有达到我的目标。。并且尝试了很多方法。。有谁能帮助我实现它吗。 注意:我在listitemclick listener中遇到错误
自定义对话框。阶级
public class CustomizeDialog extends Dialog {
org.me.dailogfrmchildact.MainActivity ma;
Button cancelButton;
ListView list;
int item_pos;
public CustomizeDialog(Context context) {
super(context);
Context cs = context;
/** 'Window.FEATURE_NO_TITLE' - Used to hide the title */
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog);
ma=new MainActivity();
list = (ListView) findViewById(R.id.list);
cancelButton = (Button) findViewById(R.id.OkButton);
ListviewContent.add("item1");
ListviewCount.add("20");
ListviewContent.add("item2");
ListviewCount.add("30");
list.setAdapter(new ListViewAdapter(cs));
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
item_pos = pos;
System.out.println("===========item_pos" + pos);
ma.txt.setText(ListviewContent.get(pos).toString());
dismiss();
}
});
cancelButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
dismiss();
}
});
}
private static ArrayList<String> ListviewContent = new ArrayList<String>();
private static ArrayList<String> ListviewCount = new ArrayList<String>();
private static class ListViewAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public ListViewAdapter(Context context) {
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return ListviewContent.size();
}
public Object getItem(int position) {
return position;
}
public String getCount(int position) {
return ListviewCount.get(position);
}
public String[] getSizeType(int position) {
String[] str = new String[2];
str[0] = ListviewContent.get(position);
str[1] = ListviewCount.get(position);
return str;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ListContent holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.listviewinflate, null);
holder = new ListContent();
holder.text = (TextView) convertView.findViewById(R.id.TextView01);
holder.text.setCompoundDrawables(null, null, null, null);
holder.count = (TextView) convertView.findViewById(R.id.TextView02);
holder.count.setCompoundDrawables(null, null, null, null);
convertView.setTag(holder);
} else {
holder = (ListContent) convertView.getTag();
}
holder.text.setText(ListviewContent.get(position));
holder.count.setText(ListviewCount.get(position));
return convertView;
}
static class ListContent {
TextView text;
TextView count;
}
}
}
主要活动。类别:
public class MainActivity extends Activity {
org.me.dailogfrmchildact.CustomizeDialog cd;
Button btn;
EditText txt;
CustomizeDialog customizeDialog;
boolean click = false;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
cd = new CustomizeDialog(this);
btn = (Button) findViewById(R.id.btn1);
txt = (EditText) findViewById(R.id.txt1);
/** Display Custom Dialog */
btn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
customizeDialog = new CustomizeDialog(MainActivity.this);
customizeDialog.show();
}
});
}
}
# 1 楼答案
问题是,您正在CustomizeDialog中创建新的MainActivity,而您应该首先使用创建CustomizeDialog的MainActivity
让CustomizeDialog接受MainActivity而不是上下文,并将ma设置为该值
编辑: 将CustomizeDialog的构造函数更改为: