Java 意图方法(onActivityResult)清除以前的listview存储数据
我正在尝试在Java 意图方法(onActivityResult)清除以前的listview存储数据,java,android,listview,android-intent,Java,Android,Listview,Android Intent,我正在尝试在CreateGroup.java中创建一组电话联系人。因此,出于这个目的,我使用Intent进入一个名为ContactsView.java的新活动。这里有一个所有联系人的列表。当我单击该列表中的联系人时,它会获取该联系人项目的名称,并将其返回到名为CreateGroup.java的上一个活动。但当我尝试添加更多联系人时,它会替换列表视图中先前添加的项目。我无法在列表中添加多个联系人 请有人帮帮我 CreateGroup.java public class CreateG
CreateGroup.java
中创建一组电话联系人。因此,出于这个目的,我使用Intent
进入一个名为ContactsView.java
的新活动。这里有一个所有联系人的列表。当我单击该列表中的联系人时,它会获取该联系人项目的名称,并将其返回到名为CreateGroup.java
的上一个活动。但当我尝试添加更多联系人时,它会替换列表视图中先前添加的项目。我无法在列表中添加多个联系人
请有人帮帮我
CreateGroup.java
public class CreateGroup extends ActionBarActivity {
TextView textView;
ListView show;
ArrayList<String> addArray=new ArrayList<String >();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create_group);
ImageButton next = (ImageButton)findViewById(R.id.imgButtonAddContacts);
textView=(TextView)findViewById(R.id.textViewtst);
show= (ListView) findViewById(R.id.listView2);
next.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), ContactsView.class);
startActivityForResult(myIntent, 0);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (0) : {
if (resultCode == Activity.RESULT_OK) {
String newText = data.getStringExtra("CName");
addArray.add(newText);
ArrayAdapter<String>adapter=new ArrayAdapter<String> (CreateGroup.this,android.R.layout.simple_list_item_1,addArray);
show.setAdapter(adapter);
}
break;
}
}
}
}
您不应该调用super.onActivityResult(请求代码、结果代码、数据)
作为第一件事,但只有当您面对的requestCode
不是由您的代码处理的时候。换句话说,这应该添加到default
部分的switch
块中。另一件事是,您不应该每次都设置新的适配器。因此:
addArray.add(newText);
ArrayAdapter<String>adapter=new ArrayAdapter<String> (CreateGroup.this,android.R.layout.simple_list_item_1,addArray);
show.setAdapter(adapter);
它只需将数据添加到当前数组中,然后通知适配器(当然,您需要在
onCreate()
中另外创建适配器)数据集中的更改。欢迎使用stackoverflow。请删除注释行并改进代码格式,以便获得更清晰的代码和更好的性能question@Robert我已经重新格式化了我的代码。请检查一下,我已经更新了代码。但问题尚未解决…仅显示最近添加的联系人姓名。请帮忙!
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case (0) : {
if (resultCode == Activity.RESULT_OK) {
String newText = data.getStringExtra("CName");
textView.setText(newText);
addArray.add(newText);
adapter.notifyDataSetChanged();
show.setAdapter(adapter);
}
break;
}
default:
super.onActivityResult(requestCode, resultCode, data);
}
}
addArray.add(newText);
ArrayAdapter<String>adapter=new ArrayAdapter<String> (CreateGroup.this,android.R.layout.simple_list_item_1,addArray);
show.setAdapter(adapter);
addArray.add(newText);
adapter.notifyDatasetChanged();