私がやっているアプリケーションでは、テキストに応じて何か違うようにしようとしているので、行のテキストを取得するコードがあります私はクリックしてから、if elseを使ってコードに応じて何か違うことをするようプログラムに指示します。リストビューの行のテキストを変数に入れよう
@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(」。「)」、それは常にbrowseToSDを行いますので、常にTRUEですが、時にはテキストは「..」であり、それはだ倍の大半何かが完全に異なっているので、アプリはそれがやろうとしていることをしません。 "var_x.equalsを("。 ")" と "var_x.equals(" .. ")" は常にfalseです、
@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);
}
}
をしかし、これはどちらか動作しません:私はこれにコードを変更しようとしました。私はJavaとAndroidでプログラミングするのが本当に新しいので、なぜそれが動作しないのか、何か考えがないのですか?
は私がvar_x.getText()に変更toString()を等号( "")、今では同じです:
をそして、次の操作を行います。これを試してみてください。 ")")、それは常にTRUEなので、2番目のelseは評価されず、else = ... /実際には動作しない理由を知りません... "var_x.getText() –
私は私の答えを編集しました...それはあなたが常に最初の行を取得しているようです(getViewをやっていると思うのですが).toString()。equals( "。") "と" selectedFileString.equals( "。" 0、null、null))。 – Cristian
素晴らしい!今は完璧に動作します。今、好奇心のために、あなたや他の誰かが "String selectedFileString = this.directoryEntries.get(selectionRowID)"が正しく動作しなかった理由を知っていますか? –