如何在按钮单击事件上将项添加到列表视图?

时间:2017-12-08 14:41:15

标签: java android arraylist

我在Android Studio中编码并遇到一些麻烦。我有一个按钮和一个列表视图。单击该按钮时,它应该将一个硬编码的字符串添加到arraylist。

List participants;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initParticipants();

    ListAdapter listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, participants);
    ListView participantList = findViewById(R.id.participantList);
    participantList.setAdapter(listAdapter);

}

public void changeJoinState(View view) {

    boolean checked = ((ToggleButton) view).isChecked();

    if(checked) {

        participants.add("example");

        Toast.makeText(MainActivity.this, "Joined event", Toast.LENGTH_SHORT)
                .show();

    } else {

        Toast.makeText(MainActivity.this, "Left event", Toast.LENGTH_SHORT)
                .show();

    }

}

void initParticipants() {
    participants = new ArrayList<String>();
    participants.add("Creator");
}

3 个答案:

答案 0 :(得分:0)

更新列表后,您应该调用notifyDataSetChanged以查看更新的UI。在类级别创建ListView变量。在将字符串添加到列表后也调用notifyDataSetChanged。

participants.add("example");
listAdapter.notifyDataSetChanged();

答案 1 :(得分:0)

使用notifyDataSetChanged()

void initParticipants() {
   participants = new ArrayList<String>();
   participants.add("Creator");
   participants.notifyDataSetChanged();
}

答案 2 :(得分:0)

您需要更改带有以下代码的条件块代码

if(isset($_POST['submit'])){


    $sql="INSERT INTO reservation 
    VALUES (null,
    '".$_POST['type']."',
    '".$_POST['title']."',
    '".$_POST['fname']."',
    '".$_POST['lname']."',
    '".$_POST['contact']."',
    '".$_POST['username']."'
    ,'".$_POST['password']."',
    '".$_POST['email']."',
    '".$_POST['address']."',
    '".$_POST['checkin']."',
    '".$_POST['checkout']."');";

    $sql .= "INSERT INTO users 
    VALUES (null,'".$_POST['username']."','".$_POST['password']."','client');";

    mysqli_multi_query($conn,$sql);

    mysqli_close($conn);
    header("Location: login.php");



}

每当列表发生变化时,都需要通过notifyDataSetChanged()方法通知适配器