2015-07-11 109 views
2

我試圖隱藏RecyclerView,直到用戶傳遞一些有效信息。但它沒有發生。當我嘗試這個時發生一些奇怪的事情,但它不顯示任何錯誤。如何隱藏整個RecyclerView?

這裏是我的代碼:

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    private Toolbar toolbar; 
    private LinearLayout recyclerRow; 


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

     Paper.init(getApplicationContext()); 

     toolbar = (Toolbar) findViewById(R.id.app_bar); 
     setSupportActionBar(toolbar); 

     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer); 
     drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), (Toolbar) findViewById(R.id.app_bar)); 

     RecyclerView recyclerView = (RecyclerView) findViewById(R.id.goalList); 
     RVAdapter adapter = new RVAdapter(getApplicationContext(), getData()); 
     recyclerView.setAdapter(adapter); 
     recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext())); 

     recyclerRow = (LinearLayout) findViewById(R.id.goal_row); 
     if(Paper.get("goalTitle") == null){ 
      recyclerView.setVisibility(View.GONE); 
      recyclerRow.setVisibility(View.GONE); 
     } 
    } 


    public List<RVData> getData() { 

     Log.d("Check6", Paper.get("goalTitle") + ""); 
     List<RVData> data = new ArrayList<>(); 
     String[] titles = {(String) Paper.get("goalTitle")}; 


     for (int i = 0; i < titles.length; i++) { 
      RVData current = new RVData(); 
      current.goalTitle = titles[i]; 
      data.add(current); 
     } 

     return data; 
    } 



    public void newGoal(View view) { 
     Intent intent = new Intent(MainActivity.this, NewGoal.class); 
     startActivity(intent); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

我使用Paper我的數據庫。

+0

我也有同樣的問題。 RecyclerView.setVisibility不起作用。你有沒有找到解決辦法? – kirtan403

+0

還沒有。現在就離開它。如果您發現任何問題,請在評論中告訴我。或者如果你回答這個問題更好。 – 4127157

+0

我已經添加了一個答案,我最終做了什麼。它按預期工作。 – kirtan403

回答

1

而不是setVisibility,您可以使用setAlpha(0)來隱藏和setAlpha(1)來顯示。這就是我最終做的。它工作得很好。這與使用可見性Invisible的效果相同。

+0

Visibility Invisible刪除整個RecyclerView,同時更改Alpha值只會使其看起來像消失,不是嗎? – 4127157

+0

是的,這是正確的。這將是像你設置可見性一樣的效果,以'不可見'。 '去掉'實際上去除它並且'隱形'隱藏它保持它的高度和寬度。 – kirtan403

+0

啊哈,這就是我的想法。 – 4127157