我无法配置个人适配器
I can not configure a personal adapter
大家好!请帮忙解决这个问题。我希望在单击按钮时打开 ALERTDIALOG。此对话框在 DialogFactors class 中实现,并在 MainActivity:
中调用
主要活动
AlertDialog dialog = DialogFactory.getDialog(MainActivity.this);
在 DialogFactory 中,我创建了我的 (class) 个人适配器,并对其进行了配置。我想为此适配器创建一个变量,但我将 "this" 写入 CONTEXT 变量,它会引发错误。
public class DialogFactory extends ListActivity {
public static AlertDialog getDialog(Activity activity) {
View view = activity.getLayoutInflater().inflate(R.layout.lsview, null); // 2. Создал вьюшку
ListView lv = (ListView) view.findViewById(R.id.lisV); // 1. Создаю ListView
String values[] = { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" }; // 3. Массив с данными
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
// use your custom layout
MyAdapter adapter = new MyAdapter(activity, values ); //error
lv.setAdapter(adapter);
builder.setView(view);
return builder.create();
}
class MyAdapter extends ArrayAdapter<String>{
Context context;
String rvalues[];
public MyAdapter(Context c, String values[]) {
super(c, R.layout.listviex, R.id.textView12);
this.context = c;
this.rvalues = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater li = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View lx = li.inflate(R.layout.listviex, parent, false); // 2. Создал вьюшку
TextView tv = lx.findViewById(R.id.textView12);
tv.setText(rvalues[position]);
return lx;
}
}
}
您必须使您的 getDialog
不是静态的或使您的 MyAdapter
静态!
public AlertDialog getDialog(Activity activity) {...
或
public static class MyAdapter extends ArrayAdapter<String> {...
更新:
如果您使 getDialog
不是静态的,那么您必须首先获取 DialogFactory
class 的新实例:
DialogFactory dialogFactory = new DialogFactory();
然后 :
AlertDialog dialog = dialogFactory.getDialog(this);
大家好!请帮忙解决这个问题。我希望在单击按钮时打开 ALERTDIALOG。此对话框在 DialogFactors class 中实现,并在 MainActivity:
中调用主要活动
AlertDialog dialog = DialogFactory.getDialog(MainActivity.this);
在 DialogFactory 中,我创建了我的 (class) 个人适配器,并对其进行了配置。我想为此适配器创建一个变量,但我将 "this" 写入 CONTEXT 变量,它会引发错误。
public class DialogFactory extends ListActivity {
public static AlertDialog getDialog(Activity activity) {
View view = activity.getLayoutInflater().inflate(R.layout.lsview, null); // 2. Создал вьюшку
ListView lv = (ListView) view.findViewById(R.id.lisV); // 1. Создаю ListView
String values[] = { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" }; // 3. Массив с данными
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
// use your custom layout
MyAdapter adapter = new MyAdapter(activity, values ); //error
lv.setAdapter(adapter);
builder.setView(view);
return builder.create();
}
class MyAdapter extends ArrayAdapter<String>{
Context context;
String rvalues[];
public MyAdapter(Context c, String values[]) {
super(c, R.layout.listviex, R.id.textView12);
this.context = c;
this.rvalues = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater li = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View lx = li.inflate(R.layout.listviex, parent, false); // 2. Создал вьюшку
TextView tv = lx.findViewById(R.id.textView12);
tv.setText(rvalues[position]);
return lx;
}
}
}
您必须使您的 getDialog
不是静态的或使您的 MyAdapter
静态!
public AlertDialog getDialog(Activity activity) {...
或
public static class MyAdapter extends ArrayAdapter<String> {...
更新:
如果您使 getDialog
不是静态的,那么您必须首先获取 DialogFactory
class 的新实例:
DialogFactory dialogFactory = new DialogFactory();
然后 :
AlertDialog dialog = dialogFactory.getDialog(this);