打开活动,列表中包含第一个listView。该列表是使用new ArrayList<>(Constants.FIRST)
复制的常量列表的副本。
我清除(活动)列表并使用list = new ArrayList(Constants.SECOND);
引用第二个列表,通知适配器但是为空。
返回第一个列表,列表再次为空。
这是我用过的代码
public class Activity extends AppCompatActivity{
private List<Object> list; //tried also... = new ArrayList<>;
private boolean boo;
private ObjectAdapter adapter;
@Override
protected void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
setContentView(R.layout.list_view);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ListView listView = (ListView) findViewById(R.id.list);
list = new ArrayList<>(Constants.FIRST);
adapter = new ObjectAdapter(this, list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (boo){
newIntent(position);
}
else {
secondList(position);
}
}
});
}
public void newIntent(int position){
startActivity(new Intent(this, Activity2.class);
}
public void secondList(int position){
list.clear();
list = new ArrayList<>(Constants.SECOND);
adapter.notifyDataSetChanged();
boo = true;
}
@Override
public void onBackPressed() {
if (boo) {list.clear(); list = new ArrayList<>(Constants.FIRST); adapter.notifyDataSetChanged(); boo=false;}
else {finish();}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return (super.onOptionsItemSelected(item));
}
}
这是常量列表
public interface Constants {
List<Object> FIRST= new ArrayList<Object>(){{
add (new Object(0, 1, "Good"));
add (new Object(1, 1, "Ok"));
List<Object> SECOND= new ArrayList<Object>(){{
add (new Object(0, 2, "First"));
add (new Object(1, 2, "Second"));