在我正在做的应用程序中,我试图让它根据文本做一些不同的事情,所以我有一个代码,据说检索我点击的行的texto然后用if if告诉程序根据代码做一些不同的事情。
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
int selectionRowID = (int) this.getSelectedItemId();
String selectedFileString = this.directoryEntries.get(selectionRowID);
if (selectedFileString.equals(".")) {
this.browseToSD();
} else if(selectedFileString.equals("..")) {
this.upOneLevel();
} else {
File clickedFile = null;
clickedFile = new File(this.currentDirectory.getAbsolutePath() + this.directoryEntries.get(selectionRowID));
if(clickedFile != null)
this.browseTo(clickedFile);
}
}
但是它不起作用,这个:“selectedFileString.equals(”。“)”总是为TRUE所以它总是执行browseToSD,但有时文本是“..”而且大多数时候它都是完全不同的东西所以该应用程序没有做它想做的事情。我试图将代码更改为:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
ListView lv = getListView();
ListAdapter list_adapter = lv.getAdapter();
TextView var_x = (TextView) list_adapter.getView(0,null,null);
if (var_x.equals(".")) {
this.browseToSD();
} else if(var_x.equals("..")) {
this.upOneLevel();
} else {
File clickedFile = null;
clickedFile = new File(this.currentDirectory.getAbsolutePath() + this.directoryEntries.get(selectionRowID));
if(clickedFile != null)
this.browseTo(clickedFile);
}
}
但这也不起作用,“var_x.equals(”。“)”和“var_x.equals(”..“)”总是假的。我是Java和Android编程的新手,所以我不知道为什么它不起作用,有什么想法?
答案 0 :(得分:0)
“selectedFileString.equals(”。“)”始终为TRUE
这可能意味着
String selectedFileString = this.directoryEntries.get(selectionRowID)
工作不正常。这是你必须要审查的第一件事。
“var_x.equals(”。“)”和“var_x.equals(”..“)”总是假的
这是正常的。 var_x
是一个Widget(TextView),而不是String。所以它永远不会平等。试试这个:
var_x.getText().toString().equals(".")
这样做:
TextView var_x = (TextView) list_adapter.getView(position,null,null);