【问题标题】:Put the text of a row of a listview in a variable将列表视图的一行文本放入变量中
【发布时间】:2011-01-02 21:03:14
【问题描述】:

在我正在做的应用程序中,我试图让它根据文本做一些不同的事情,所以我有一个代码可以检索我点击的行的文本,然后用 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(".")”总是 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 编程的新手,所以我不知道为什么它不起作用,有什么想法吗?

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    "selectedFileString.equals(".")" 始终为 TRUE

    这可能意味着

    String selectedFileString = this.directoryEntries.get(selectionRowID)
    

    无法正常工作。这是您必须审查的第一件事。

    "var_x.equals(".")" 和 "var_x.equals("..")" 总是假的

    这很正常。 var_x 是一个小部件(TextView),而不是一个字符串。所以永远不会平等。试试这个:

    var_x.getText().toString().equals(".")
    

    然后这样做:

    TextView var_x = (TextView) list_adapter.getView(position,null,null);
    

    【讨论】:

    • 我改为 var_x.getText().toString().equals(".") 现在和 selectedFileString.equals(".") 一样,它总是 TRUE 所以第二个if else 从未被评估过, else 也没有... =/ 我真的不知道为什么它不起作用... "var_x.getText().toString().equals(".")"和 "selectedFileString.equals(".")" 对我来说似乎没问题
    • 我编辑了我的答案......看来你总是得到第一行(你正在做 getView(0, null, null))。
    • 太棒了!现在它完美地工作了。现在,出于好奇,您或其他人知道为什么“String selectedFileString = this.directoryEntries.get(selectionRowID)”无法正常工作吗?
    • 是的,我知道为什么(我没有注意到你在做什么,抱歉......)。它不起作用,因为get 需要一个位置,而您给它的是不同的行 ID;)
    猜你喜欢
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多