在popupwindow中添加列表

时间:2013-09-12 05:22:01

标签: android android-listview

我必须创建一个应用程序,我必须在弹出窗口中显示名称列表。

我使用array-list从数据库中获取值,但是我不能把它放在数组适配器中。

这是我的代码:

public class Calculator_new_Pop extends Dialog implements View.OnClickListener{ 

... // rest of the code
ArrayList<String> wallAreas=new ArrayList<String>();

wallAreas=GenericDAO.getWallAreas(room_id);//to fetch the values from databases


ArrayAdapter<String> new_adapter = new ArrayAdapter<String>(Calculator_new_Pop.this,android.R.layout.simple_list_item_1,wallAreas);
                 _ltvw.setAdapter(new_adapter);

... // rest of the code
}

错误是

  

“构造函数ArrayAdapter(Calculator_new_Pop,int,ArrayList)未定义”

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

使用活动上下文

ArrayAdapter<String> new_adapter = new ArrayAdapter<String>(ActivityName.this,android.R.layout.simple_list_item_1,wallAreas);

您可以将活动上下文传递给Calculator_new_Pop的构造函数,并使用相同而不是Calculator_new_Pop.this

修改

 Context mContext; 
 public Calculator_new_Pop(Context context)
 {
      mContext = context;
 } 

然后

   ArrayAdapter<String> new_adapter = new ArrayAdapter<String>(mContext,android.R.layout.simple_list_item_1,wallAreas); 

看一下ArrayAdapter的构造函数。

http://developer.android.com/reference/android/widget/ArrayAdapter.html

答案 1 :(得分:0)

请参阅链接 link

ArrayAdapter需要一个上下文作为参数,您提供的是不是Context类型的Dialog实例,这就是显示错误的原因。而不是Dialog实例获取活动上下文。

您可以在对话框的构造函数中传递活动上下文,从而在ArrayAdapter中提供该上下文。

public class Calculator_new_Pop extends Dialog implements View.OnClickListener{ 
Context mContext =null;
public Calculator_new_Pop(Context c ){
this.mContext = c;}

.............
.............
.............

ArrayList<String> wallAreas=new ArrayList<String>();

wallAreas=GenericDAO.getWallAreas(room_id);//to fetch the values from databases


ArrayAdapter<String> new_adapter = new ArrayAdapter<String>(mContext,android.R.layout.simple_list_item_1,wallAreas);
                 _ltvw.setAdapter(new_adapter);

.......
}

从活动实例化对话框时,传递this

答案 2 :(得分:0)

我在“mContext”中得到'null' 所以我试过这个..

public Calculator_new_Pop(Activity parent) {
        // TODO Auto-generated constructor stub
        super(parent);

        this._act = parent;
//      
    }


_ltvw.setAdapter(new ArrayAdapter<String>(_act,android.R.layout.simple_list_item_multiple_choice,data));

它有效..