Java 单击按钮时从列表中删除名称

Java 单击按钮时从列表中删除名称,java,android,Java,Android,我是新来安卓工作室的,我有个问题 正如您在屏幕截图上看到的,当用户写入名称并单击“添加”按钮时,新布局将显示此名称和按钮以将其删除。 现在,当我进入下一个屏幕单击“继续”时,所有名称都可见。当我想删除某些名称时,单击“删除”按钮会出现问题,例如,我想删除David。大卫不应该在下一个活动中出现。不幸的是,他是。 这是我的代码: 团队名称活动 public class TeamNamesActivity extends Activity { Button button_more_player

我是新来安卓工作室的,我有个问题

正如您在屏幕截图上看到的,当用户写入名称并单击“添加”按钮时,新布局将显示此名称和按钮以将其删除。

现在,当我进入下一个屏幕单击“继续”时,所有名称都可见。当我想删除某些名称时,单击“删除”按钮会出现问题,例如,我想删除David。大卫不应该在下一个活动中出现。不幸的是,他是。

这是我的代码:

团队名称活动

public class TeamNamesActivity extends Activity {

Button button_more_players;
EditText namesBlueTeam;
Button addPlayersBlueTeam;
LinearLayout containerBlueTeam;
EditText namesRedTeam;
Button addPlayersRedTeam;
LinearLayout containerRedTeam;
int shortestNameLength = 3;
ArrayList<String> names_blueTeam = new ArrayList<>();
ArrayList<String> names_redTeam = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_team_names);
    namesBlueTeam = (EditText)findViewById(R.id.first_player_blue);
    namesRedTeam = (EditText)findViewById(R.id.first_player_red);
    addPlayersBlueTeam = (Button)findViewById(R.id.more_players_blue_team);
    addPlayersRedTeam = (Button)findViewById(R.id.more_players_red_team);
    containerBlueTeam = (LinearLayout)findViewById(R.id.container_blue);
    containerRedTeam = (LinearLayout)findViewById(R.id.container_red);
}

public void addMorePlayers_blueTeam(View view) {
    button_more_players = (Button) findViewById(R.id.more_players_blue_team);
    addPlayers(namesBlueTeam, containerBlueTeam, names_blueTeam);
}

public void addMorePlayers_redTeam(View view) {
    button_more_players = (Button) findViewById(R.id.more_players_red_team);
    addPlayers(namesRedTeam, containerRedTeam, names_redTeam);
}

public void addPlayers(EditText nameOfPlayer, LinearLayout container, List<String> playersNames) {
    final View addView;
    LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if(nameOfPlayer.getText().length() >= shortestNameLength) {

        addView = layoutInflater.inflate(R.layout.activity_to_add_more_players, null);
        TextView textOut = (TextView)addView.findViewById(R.id.textout);
        String currentName = nameOfPlayer.getText().toString();
        textOut.setText(currentName);
        playersNames.add(currentName);

        nameOfPlayer.setText("");
        Button buttonRemove = (Button)addView.findViewById(R.id.remove);
        buttonRemove.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ((LinearLayout)addView.getParent()).removeView(addView);
            }
        });
        container.addView(addView);

    }
}

public void goFurther(View view) {

    Intent teamNamesIntent = new Intent(this, StartGameActivity.class);
    teamNamesIntent.putExtra("names_redTeam", names_redTeam);
    teamNamesIntent.putExtra("names_blueTeam", names_blueTeam);
    startActivity(teamNamesIntent);

}

public void goFurtherWithoutNames(View view) {
}

public List<String> getNames_redTeam() {
    return names_redTeam;
}

public List<String> getNames_blueTeam() {
    return names_blueTeam;
}
}
公共类TeamNamesActivity扩展活动{
按钮按钮更多玩家;
编辑组;
按钮addPlayersBlueTeam;
集装箱线性布局蓝色团队;
编辑组;
按钮addPlayersRedTeam;
线性布局包含了团队;
int shortestNameLength=3;
ArrayList name_blueTeam=新ArrayList();
ArrayList name_redTeam=新建ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u team\u name);
namesBlueTeam=(EditText)findViewById(R.id.first\u player\u blue);
namesRedTeam=(EditText)findViewById(R.id.first\u player\u red);
AddPlayerBlueTeam=(按钮)findViewById(R.id.更多玩家\u blue\u团队);
addPlayersRedTeam=(按钮)findViewById(R.id.更多玩家\u红色\u团队);
containerBlueTeam=(LinearLayout)findViewById(R.id.container\u blue);
containerRedTeam=(LinearLayout)findViewById(R.id.container\u red);
}
公共无效addMorePlayers\u蓝队(视图){
button\u more\u players=(button)findViewById(R.id.more\u players\u blue\u团队);
添加玩家(名称蓝色团队、容器蓝色团队、名称蓝色团队);
}
public void addMorePlayers\u redTeam(视图){
button\u more\u players=(button)findViewById(R.id.more\u players\u red\u团队);
添加玩家(namesRedTeam、containerRedTeam、names\u redTeam);
}
public void addPlayers(EditText-nameOfPlayer、LinearLayout容器、列表播放器名称){
最终视图添加视图;
LayoutInflater LayoutInflater=(LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
if(nameOfPlayer.getText().length()>=shortestNameLength){
addView=layoutInflater.flate(R.layout.activity\u to\u add\u more\u players,null);
TextView textOut=(TextView)addView.findViewById(R.id.textOut);
String currentName=nameOfPlayer.getText().toString();
setText(当前名称);
PlayerNames.add(当前名称);
nameOfPlayer.setText(“”);
Button buttonRemove=(Button)addView.findViewById(R.id.remove);
buttonRemove.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
((LinearLayout)addView.getParent()).removeView(addView);
}
});
container.addView(addView);
}
}
公共空间(视图){
Intent teamNamesIntent=新Intent(这是StartGameActivity.class);
teamNamesIntent.putExtra(“names\u redTeam”,names\u redTeam);
teamNamesIntent.putExtra(“名称\蓝色团队”,名称\蓝色团队);
星触觉(意念);
}
不带名称的公共void(视图){
}
公共列表getNames\u redTeam(){
返回团队成员的姓名;
}
公共列表getNames_blueTeam(){
返回蓝队的名字;
}
}
StartGameActivity

public class StartGameActivity extends AppCompatActivity {

ArrayList<String> names_redTeam;
ArrayList<String> names_blueTeam;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start_game);
    TextView textOut = (TextView)findViewById(R.id.textout2);
    names_redTeam = (ArrayList<String>) getIntent().getSerializableExtra("names_redTeam");
    names_blueTeam = (ArrayList<String>) getIntent().getSerializableExtra("names_blueTeam");
    textOut.setText("Red: " + names_redTeam + " ;;;;;; " + ", Blue: " + names_blueTeam);
}
}
公共类StartGameActivity扩展了AppCompatActivity{
ArrayList名称\u redTeam;
arraylistnames_blueTeam;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u start\u game);
TextView textOut=(TextView)findViewById(R.id.textout2);
names_redTeam=(ArrayList)getIntent().getSerializableExtra(“names_redTeam”);
names_blueTeam=(ArrayList)getIntent().GetSerializableTextra(“names_blueTeam”);
setText(“红色:+names\u redTeam+”;;“+”,蓝色:+names\u blueTeam”);
}
}
要删除的布局

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

<Button android:id="@+id/remove"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text="@string/remove_player"
    />

<TextView android:id="@+id/textout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/remove"
    />


你知道我该怎么纠正它吗?:)

好的,您正在将名称添加到
names\u blueTeam
names\u redTeam
,并显示这些列表的内容

问题是,在执行删除操作时,没有从中删除相应的名称,因此它们仍会出现在下一个
活动中

像这样的方法应该会奏效:

public void addPlayers(EditText nameOfPlayer, LinearLayout container,
    final List<String> playersNames) {
    final View addView;
    LayoutInflater layoutInflater = (LayoutInflater) getBaseContext()
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (nameOfPlayer.getText().length() >= shortestNameLength) {
        addView = layoutInflater.inflate(R.layout.activity_to_add_more_players,
            null);
        TextView textOut = (TextView) addView.findViewById(R.id.textout);
        final String currentName = nameOfPlayer.getText().toString();
        textOut.setText(currentName);
        playersNames.add(currentName);

        nameOfPlayer.setText("");
        Button buttonRemove = (Button) addView.findViewById(R.id.remove);
        buttonRemove.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // removing the name from the List
                playersNames.remove(currentName);

                ((LinearLayout) addView.getParent()).removeView(addView);
            }
        });
        container.addView(addView);
    }
}
public void addPlayers(EditText-nameOfPlayer、LinearLayout容器、,
最终名单(球员姓名){
最终视图添加视图;
LayoutInflater LayoutInflater=(LayoutInflater)getBaseContext()
.getSystemService(上下文布局\充气机\服务);
if(nameOfPlayer.getText().length()>=shortestNameLength){
添加视图=布局更平坦。充气(R.layout.activity)添加更多玩家,
无效);
TextView textOut=(TextView)addView.findViewById(R.id.textOut);
最终字符串currentName=nameOfPlayer.getText().toString();
setText(当前名称);
PlayerNames.add(当前名称);
nameOfPlayer.setText(“”);
Button buttonRemove=(Button)addView.findViewById(R.id.remove);
buttonRemove.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//从列表中删除该名称
playerNames.remove(当前名称);
((LinearLayout)addView.getParent()).removeView(addView);
}
});
container.addView(addView);
}
}
(您还应查看