gpt4 book ai didi

java - 从另一个 Activity 中单击按钮时从 Activity 中删除 ListView 项目

转载 作者:行者123 更新时间:2023-12-02 12:00:04 24 4
gpt4 key购买 nike

我有一个 MainActivity,它显示一个 listview 以及我动态添加到其中的项目。到目前为止一切正常。现在想要创建一个按钮来删除被单击的listview项目。这是我附带的代码。

主要 Activity

package news;

import android.app.Activity;
import android.content.Intent;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
ArrayAdapter<String> newslist_adapter;
ArrayList<String> new_subject = new ArrayList<>();
ArrayList<String> new_post = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView post_view = findViewById(R.id.news_feed);

FloatingActionButton add_post_button = findViewById(R.id.post_btn);

//create click event and pass values of arrays
post_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Intent intent = new Intent(getApplicationContext(), full_post_activity.class);
intent.putExtra("Subject", new_subject);
intent.putExtra("Post", new_post);
intent.putExtra("position", id);
// getApplicationContext().startActivity(intent);
startActivityForResult(intent, 2);
}
});

//create button connection and create keylistener
add_post_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, addpost_activity.class);
startActivityForResult(intent, 1);

}
});

}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
final ListView post_view = findViewById(R.id.news_feed);
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
//get subject and post from second activity
String new_subject_value = data.getStringExtra("newSubject");
String new_post_value = data.getStringExtra("newPost");
new_subject.add(new_subject_value);
new_post.add(new_post_value);
newslist_adapter = new ArrayAdapter<>(
MainActivity.this,
android.R.layout.simple_expandable_list_item_1, new_subject);
post_view.setAdapter(newslist_adapter);

}
}
if (requestCode == 2) {
if(resultCode == Activity.RESULT_OK){
String item2delete = data.getStringExtra("id");
new_subject.remove(item2delete);
newslist_adapter = new ArrayAdapter<>(
MainActivity.this,
android.R.layout.simple_expandable_list_item_1, new_subject);
post_view.setAdapter(newslist_adapter);
}
}
}
}

第二个 Activity

package news;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;

public class full_post_activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.full_post_activity);

final int id = getIntent().getExtras().getInt("id");

//create view reference
final TextView subject_edit = findViewById(R.id.subject_input);
final TextView post_edit = findViewById(R.id.post_input);

//create button reference
Button delete_button = findViewById(R.id.full_post_delete_btn);

//create click event
delete_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.putExtra("id", id);
setResult(Activity.RESULT_OK, intent);
finish();
}
});

ArrayList<String> subject_array = (ArrayList<String>) getIntent().getSerializableExtra("Subject");
ArrayList<String> post_array = (ArrayList<String>) getIntent().getSerializableExtra("Post");

String subject_string = subject_array.get(0);
String post_string = post_array.get(0);

//set textview text
subject_edit.setText(subject_string);
post_edit.setText(post_string);
}
}

我现在的问题是,删除按钮除了返回到MainActivity之外没有执行任何操作。我做错了什么?

最佳答案

您无法获取 MainActivity 的 id 值。第二个 Activity 中的这一行导致问题

final int id = getIntent().getExtras().getInt("id");

在主 Activity 中,您可以使用名称索引“位置”放置 id 值

intent.putExtra("position", id);

所以你应该将它们更改为

第二个 Activity

final int id = getIntent().getExtras().getInt("position");

主要 Activity

intent.putExtra("id", id);

已更新,请在主要 Activity 中尝试此操作

intent.putExtra("id", position);

关于java - 从另一个 Activity 中单击按钮时从 Activity 中删除 ListView 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47332212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com