我对ListView项的onClick方法有一个问题

时间:2012-09-01 14:07:31

标签: android

我有一个显示列表视图的应用程序。我打算这样做,以便当用户点击listview项时,会出现一个显示XML布局的对话框。但我的问题很少。

我已经启动并运行了列表视图。以下是onclick侦听器的活动类中的代码。

 final ListView lv1 = (ListView) findViewById(R.id.listV_main);
        lv1.setAdapter(new ItemListBaseAdapter(this, image_details));

        lv1.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
                Object o = lv1.getItemAtPosition(position);
                ItemDetails obj_itemDetails = (ItemDetails)o;
                Toast.makeText(VanillaBlockList.this, "Loading details for: " + " " + obj_itemDetails.getName(), Toast.LENGTH_LONG).show();

                if(obj_itemDetails.getPrice().equals("ID - 1")){

                    // custom dialog
                    final Dialog dialog = new Dialog(Context);
                    dialog.setContentView(R.layout.va_type1);
                    dialog.setTitle("Information");

                    dialog.show();

                }

                if(obj_itemDetails.getPrice().equals("ID - 2")){
              /* Stuff here*/ }
            } 

        });
    } 

问题是以上代码的这一部分:

if(obj_itemDetails.getPrice().equals("ID - 1")){

                    // custom dialog
                    final Dialog dialog = new Dialog(Context);
                    dialog.setContentView(R.layout.va_type1);
                    dialog.setTitle("Stone");

                    dialog.show();

                }

创建新对话框的行给了我一个错误。在Eclipse中,“new Dialog(Context)”的“Context”部分用红色下划线表示错误。

有谁知道如何解决这个问题?

由于

3 个答案:

答案 0 :(得分:2)

你能告诉我们错误是什么,而不是它在哪里吗?

除了基础知识之外,我没有使用Context或Dialog,但尝试传入Context对象,而不仅仅是类。在onActivityCreate方法中,调用

Context c = this;

然后

final Dialog dialog = new Dialog(c);

答案 1 :(得分:0)

您只能将对象传递给方法/构造函数。 “上下文”不是一个对象。 而不是新的Dialog(Context)尝试getApplicationContext()或getActivityContext():

final Dialog dialog = new Dialog(getApplicationContext());

答案 2 :(得分:0)

final Dialog dialog = new Dialog(Context);可能是问题是使用Context.You使用您的活动名称.this或getApplicationContext()。