如何使用引用更多CONSTANT List <object>的变量List <object>

时间:2016-10-31 20:18:26

标签: android list object clone constants

  1. 打开活动,列表中包含第一个listView。该列表是使用new ArrayList<>(Constants.FIRST)复制的常量列表的副本。

  2. 我清除(活动)列表并使用list = new ArrayList(Constants.SECOND);引用第二个列表,通知适配器但是为空。

  3. 返回第一个列表,列表再次为空。

  4. 这是我用过的代码

    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"));
    

0 个答案:

没有答案