Android - 从另一个Activity向ListView添加项目

时间:2016-12-27 23:08:56

标签: java android listview arraylist

首先,我已经搜索了很多其他帖子,但仍未找到解决方法。

MainActivity包含ListViewImageButton,其中包含AddActivity。 此AddActivity有一个EditTextnameAddInput)和一个ButtonaddButton)。

尽管点击此ButtonListView中的MainActivity仍为空......不明白为什么......

以下是MainActivity的代码

public class MainActivity extends AppCompatActivity {

static final int PICK_CONTACT_REQUEST = 0;

private ListView list;
private ArrayAdapter<String> adapter;
private ArrayList<String> arrayList;


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

    list = (ListView) findViewById(R.id.itemsList);
    arrayList = new ArrayList<>();
    adapter = new ArrayAdapter<>(this, R.layout.listview_style1, android.R.id.text1, arrayList);
}

public void onClickAddButton(View view) {
    Intent i = new Intent(MainActivity.this, AddActivity.class);
    startActivityForResult(i, 2);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == PICK_CONTACT_REQUEST) {
        if (resultCode == RESULT_OK) {
            addNewItem();
        }
    }
}

public void addNewItem() {
    Bundle addNameInfo = getIntent().getExtras();
    if(addNameInfo == null)
        return;
    String nameInput = addNameInfo.getString("nameInput");
    arrayList.add(nameInput);
    list.setAdapter(adapter);
    adapter.notifyDataSetChanged();
}

}

在ImageButton中的 MainActivity的xml文件android:onClick="onClickAddButton"

AddActivity的代码

public class AddActivity extends AppCompatActivity {

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

public void backToMain(View view) {
    Intent i = new Intent();
    EditText nameAddInput = (EditText) findViewById(R.id.nameAddInput);
    String userNameText = nameAddInput.getText().toString();
    i.putExtra("nameInput", userNameText);
    setResult(RESULT_OK, i);
    finish();
}

}

按钮中的 AddActivity的xml文件android:onClick="backToMain"

希望有人可以帮忙! 提前谢谢!!

3 个答案:

答案 0 :(得分:0)

getIntent()返回启动MainActivity的意图,而不是您在backInMain中设置的意图

尝试在onActivityResult中传递给你的“数据”变量?

也改为

startActivityForResult(i, PICK_CONTACT_REQUEST);

我还建议您重命名该变量

答案 1 :(得分:0)

在onCreate中设置适配器,只需在addNewItem方法中调用notifyDataSetChanged。

答案 2 :(得分:0)

结果值在onActivityResult函数的Intent data - 参数中返回,而不是在mainActivity的intent-member中返回。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent    data) {
    if (requestCode == PICK_CONTACT_REQUEST) {
        if (resultCode == RESULT_OK) {
            addNewItem(data.getExtras().getString("nameInput");
       }
   }
}
...
public void addNewItem(String newItem)
...