Кнопка, показывающая внутренний адрес кнопки вместо текста setText

Каждая строка в моем списке просмотра имеет 2 кнопки. Отображаемый текст зависит от некоторых характеристик, и поэтому я хочу изменить текст на кнопке. Однако я не только не могу изменить текст, но текст, который появляется, похож на внутренний адрес кнопки, то есть "ANDROID.WIDGET.BUTTON{175F420 VFED..C.. ....I. 0,0-0,0#7F0C00083 APP:ID/READ} Вот мой код:

import android.widget.Button;
....

public void ShowArticles(){

ArrayList<ArticleSelection> articleSelectionList = helper
            .GetArticleListForResource(globalVariable.getCategoryIndex());


    String[] columnNames = {"_id", "Column1", "Column2", "Column3",
            "Column4", "Column5", "Column6", "Column7"};
    MatrixCursor matrixCursor = new MatrixCursor(new String[]{"_id",
            "Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7" });

    int[] to = new int[]{R.id.id, R.id.imageButton, R.id.title, R.id.year, R.id.authors,
            R.id.favs, R.id.read, R.id.readOnLine};


for (ArticleSelection articleItem : articleSelectionList) {

     Button btn1 = (Button) ThisView.findViewById(R.id.read);
     Button btn2 = (Button) ThisView.findViewById(R.id.readOnLine);

     if (Downloaded == "Y"){
         btn1.setText("Read");
     }
     else btn1.setText("Download");

     matrixCursor.addRow(new Object[]{k, imgFile,Title, Year , Authors, favs , btn1, btn2 });
}

SimpleCursorAdapter menuItems = null;
menuItems = new SimpleCursorAdapter(
        this, R.layout.article_row, matrixCursor, columnNames, to);

listView.setAdapter(menuItems);
}

Мой XML для кнопок:

   <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/read"
    android:backgroundTint="#00000000"
    android:text="Download"
    android:layout_toRightOf="@+id/favs"
    android:layout_alignBottom="@+id/imageButton"
    android:layout_marginStart="11dp"
    android:layout_weight="1"
    />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id = "@+id/readOnLine"
    android:backgroundTint="#00000000"
    android:layout_toRightOf="@+id/read"
    android:text="Read Online"
    android:layout_alignBottom="@+id/imageButton"
    android:layout_alignParentEnd="true"
    android:layout_weight="1"
    />

Спасибо. Ответ, вероятно, очень прост, так как я делал это раньше, но я не думаю, что сделал это в строках списков. Я видел другие ответы о добавлении текста на кнопку, и те, которые я пробовал.

2 ответа

Решение

Попробуйте изменить строку добавления на

matrixCursor.addRow(new Object[]{k, imgFile,Title, Year , Authors, favs , btn1.getText(), btn2.getText() })

Сначала объявите свой Button вне цикла

Button btn1 = (Button) ThisView.findViewById(R.id.read);
Button btn2 = (Button) ThisView.findViewById(R.id.readOnLine);

Второе, чтобы сравнить между String использование equals не ==

Downloaded.equals("Y");

В третьих, ANDROID.WIDGET.BUTTON{175F420 VFED..C.. ....I. 0,0-0,0#7F0C00083 APP:ID/READ это строковая презентация для вашего btn1

Другие вопросы по тегам