我正在尝试使用适配器在android studio中制作排行榜,但这样做很好:
但我想让分数显示在右侧。所以我做了这个,但滚动进来时有问题:
因为您可以滚动它们,所以名称和分数不匹配。
我怎么能做到这一点,因为只有一个滚动,或者某个名称在左侧,得分在右侧。
// Get ListView object from xml
final ListView nameView = (ListView) findViewById(R.id.nameView);
final ListView scoreView = (ListView) findViewById(R.id.scoreView);
// Create a new Adapter
final ArrayAdapter<String> nameAdapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, android.R.id.text1);
final ArrayAdapter<String> scoreAdapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, android.R.id.text1);
// Assign adapter to ListView
nameView.setAdapter(nameAdapter);
scoreView.setAdapter(scoreAdapter);
// Ordering with score and adding key values as string to nameList
highscoreRef.orderByChild("score").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
nameList.push(snapshot.child("name").getValue().toString());
scoreList.push(snapshot.child("score").getValue().toString());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getApplicationContext(), "Error sending data.", Toast.LENGTH_LONG).show();
}
});
//Collections.reverse(nameList);
highscoreRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (String name : nameList) {
nameAdapter.add(name);
}
for (String score : scoreList) {
scoreAdapter.add(score);
}
nameList.clear();
scoreList.clear();
}
}
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="Huippupisteet"
android:id="@+id/highscore_text"
android:layout_gravity="center"
android:textSize="25dp"
android:layout_weight="0"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ListView
android:id="@+id/nameView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
>
</ListView>
</LinearLayout>
答案 0 :(得分:1)
您需要将用户名和分数字段添加到唯一列表项,然后使用单个ListView。然后在适配器中,您可以设置两个值。 。 要实现此目的,请根据此示例修改simple_list_item_1:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp">
<TextView
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/score"
android:ellipsize="end"
android:maxLines="1"
android:text="Roger" />
<TextView
android:id="@+id/score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true" />
</RelativeLayout>
删除两个ListView中的一个,扩展另一个以获取所有必要的宽度并修改适配器以设置这两个值,现在两个值都显示在一个膨胀的视图中。
您必须使用扩展BaseAdapter的适配器。你可以找到一个很好的例子here
答案 1 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"`enter code here`
android:layout_height="100dp"`enter code here`
android:background="@android:color/white"
tools:context="com.example.anuragsingla.myapplication.MainActivity">
<TextView`enter code here`
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:gravity="center_vertical|left"
android:layout_marginStart="10dp"
android:text="Jejeje" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
android:gravity="center_vertical|right"
android:text="3" />
</RelativeLayout>
使用上面的布局。将其替换为R.layout.simple_list_item_1。
删除其中一个Listview。使用单个列表视图并制作自定义适配器并使上述布局膨胀。我使用了两个TextView。为名称设置一个textview,为number设置另一个textview。
http://www.journaldev.com/10416/android-listview-with-custom-adapter-example-tutorial