1

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

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 未定义。

4

2 回答 2

1

是的,您需要ListView注册OnItemClickListener

比如像这样:

myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> list,
        View view, int position, long id) {
        // Your code goes here
    }
});
于 2013-01-22T14:51:02.423 回答
1

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

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

于 2013-01-22T16:33:04.027 回答