我正在制作一款游戏,要求玩家在每轮结束后保持得分。我已经有一个自定义Listview,用户可以输入他们的名字。我无法弄清楚如何做到也是在该ListView中获得一个edittext字段,以便名称与玩家指向的线相匹配。
我在这里搜索了SO和YouTube上的想法和教程,但似乎没有任何效果或有意义。
当我切换活动时,我的姓名保存也存在问题,这是不好的,因为在每一轮之后输入你的名字根本不会。
据我所知,ListViews并不是一件简单易用的东西,但如果没有它们,你就无法真正拥有它。 (Imo)
所以这就是我到目前为止所以请原谅我,如果这不是它应该如何,这是我第一次在这里发布SO并将代码放在那里。
这是我的xml文件
<?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="match_parent">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/addItem"
android:hint="Type a Players Name" />
<Button
android:id="@+id/addItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Add Player" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/addItem"
android:layout_above="@+id/newround"
android:layout_toStartOf="@+id/addItem"
android:layout_alignRight="@+id/addItem"
android:layout_alignEnd="@+id/addItem">
</ListView>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText3"
android:layout_below="@+id/addItem"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:inputType="number"
android:layout_alignLeft="@+id/addItem"
android:layout_alignStart="@+id/addItem" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:id="@+id/newround"
android:text="Next Round"
android:textSize="25sp"
android:onClick="OpenHomePage"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:inputType="number"
android:layout_below="@+id/editText3"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignLeft="@+id/editText3"
android:layout_alignStart="@+id/editText3" />
这是我的java类
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
public class ScoreBoard extends Activity {
EditText editText;
Button addButton;
ListView listView;
ArrayList<String> listItems;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.score_board);
editText = (EditText) findViewById(R.id.editText);
addButton = (Button) findViewById(R.id.addItem);
listView = (ListView) findViewById(R.id.listView);
listItems = new ArrayList<String>();
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listItems);
listView.setAdapter(adapter);
addButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
listItems.add(editText.getText().toString());
adapter.notifyDataSetChanged();
}
});
}
public void OpenHomePage(View view) {
Intent homePage = new Intent(this,MainActivity.class);
startActivity(homePage);
}
}
我知道这并不多,但任何输入都会在这两件事中受到高度赞赏。
答案 0 :(得分:-1)
您需要将listview项数组保存到SharedPreferences中,然后在下一个活动中加载并显示它,
保存阵列
public boolean saveArray(String[] array, String arrayName, Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(arrayName +"_size", array.length);
for(int i=0;i<array.length;i++)
editor.putString(arrayName + "_" + i, array[i]);
return editor.commit();
}
LOAD ARRAY
public String[] loadArray(String arrayName, Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);
int size = prefs.getInt(arrayName + "_size", 0);
String array[] = new String[size];
for(int i=0;i<size;i++)
array[i] = prefs.getString(arrayName + "_" + i, null);
return array;
}
(保存并加载到Sherif elKhatib)