列表视图OnItemClickListener无法正常工作?

时间:2013-01-17 15:11:13

标签: android listview onitemclicklistener

我有一个问题,可能很简单,但我不太明白我做错了什么。我有一个listview,它作为文件浏览器加载。这是当我点击任何一个项目时应该发生的事情。

protected void onListItemClick(ListView l, View v, int position, long id) {

File file = new File(path.get(position));

if (file.isDirectory())
{

if(file.canRead())
getDir(path.get(position));
else
{
new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("[" + file.getName() + "] folder can't be read!")
.setPositiveButton("OK", 
  new DialogInterface.OnClickListener() {   
   public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
   }
  }).show();
}

}
else
{
new AlertDialog.Builder(this)

.setIcon(R.drawable.ic_launcher)

.setTitle("[" + file.getName() + "]")

.setPositiveButton("OK", 

  new DialogInterface.OnClickListener() {


   public void onClick(DialogInterface dialog, int which) {

    // TODO Auto-generated method stub

   }

  }).show();

}

}

但是当我点击这些项目时,没有任何反应。我甚至检查了logcat,看看当我点击时是否有任何活动,但绝对没有。我是否需要以某种方式将此监听器链接到我的特定列表视图?此外,如果我需要发布更多信息,请告诉我。非常感谢你的帮助!

新问题

AlertDialog show = new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("[" + file.getName() + "] folder can't be read!")
.setPositiveButton("OK", 
  new DialogInterface.OnClickListener() {   
   public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
   }
  }).show();
}

}
else
{
new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("[" + file.getName() + "]")
.setPositiveButton("OK", 
  new DialogInterface.OnClickListener() {

   public void onClick(DialogInterface dialog, int which) {

    // TODO Auto-generated method stub

   }

  }).show();

}

在这两个方面,我得到一个错误,即alertDialog未定义。

2 个答案:

答案 0 :(得分:1)

是的,您需要使用ListView

注册OnItemClickListener

E.g。像这样:

myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> list,
        View view, int position, long id) {
        // Your code goes here
    }
});

答案 1 :(得分:1)

将上下文从“this”更改为“YourActivityName.this”

例如     新的AlertDialog.Builder(YourActivityName.this);