Android ListView добавить текст в конец строки - PullRequest
1 голос
/ 20 апреля 2020

Мой ListView предназначен для показа рейтинга пользователей, имен пользователей и их оценок, например: 1. Джон 25, и я хотел бы отобразить счет так же, как это показано в прикрепленном примере.

enter image description here

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Этого можно добиться с помощью настраиваемого адаптера списка и пользовательского макета xml Попробуйте это: -

MainActivity. java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ListView listView = findViewById(R.id.list_view);
    listView.setAdapter(new NameRankAdapter(this));
}
}

NameRankAdapter. java

public class NameRankAdapter extends BaseAdapter {
private Context context;

public NameRankAdapter(Context context) {
    this.context = context;
}

@Override
public int getCount() {
    return 20;
}

@Override
public Object getItem(int i) {
    return i;
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    if (view == null) {
        view = LayoutInflater.from(context).inflate(R.layout.list_item, null);
    }
    TextView name = view.findViewById(R.id.name);
    name.setText("Name " + i);
    TextView rank = view.findViewById(R.id.rank);
    rank.setText(String.valueOf(i));
    return view;
}
}

Activity_main. xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<ListView
    android:id="@+id/list_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</FrameLayout>

list_item. xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="left"
    android:text="name"
    android:id="@+id/name"
    android:textSize="30sp"
    android:textColor="@android:color/black"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:text="name"
    android:textSize="25sp"
    android:id="@+id/rank"
    android:textColor="@android:color/black"/>
</FrameLayout>
1 голос
/ 20 апреля 2020

Вам нужно использовать CustomAdapter вместо адаптера по умолчанию. Пожалуйста, обратитесь к этому другому ответу Адаптер для представления списка

По сути, вы создаете свой собственный макет элемента: как вы будете sh отображать каждый элемент в списке (это может быть TextView для имени пользователя и другой TextView для оценки).

А затем в методе getView Адаптера установите значение каждого из них.

...