-2

如何修復它?我在xml和循環中使用了arraylist,但導航抽屜不顯示

導航Drawer.java

public class NavigationDrawerFragment extends Fragment { 
public static final String PRE_FILE_NAME = "testpre"; 
public static final String KEY_USER_LEARNED_DRAWER = "user_learned_drawer"; 
private RecyclerView recyclerView; 
private ActionBarDrawerToggle mDrawerToggle; 
private DrawerLayout mDrawerLayout; 
private MyAdapter adapter; 
private boolean mUserLearnedDrawer; 
private boolean mFromSavedInstanceState; 
private View containerView; 

public NavigationDrawerFragment() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mUserLearnedDrawer = Boolean.valueOf(readFromPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, "false")); 
    if (savedInstanceState != null) { 
     mFromSavedInstanceState = true; 
    } 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false); 
    recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList); 
    adapter = new MyAdapter(getActivity(), getData()); 
    recyclerView.setAdapter(adapter); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    return layout; 
} 

public List<Information> getData() { 
    List<Information> data = new ArrayList<>(); 
    String[] titles = getResources().getStringArray(R.array.drawer_item_array); 
    for (int i = 0; i < titles.length; i++) { 
     Information current = new Information(); 
     current.title = titles[i]; 
     data.add(current); 
    } 
    return data; 
} 

public void setUp(int fragmentId, DrawerLayout drawerLayout, final Toolbar toolbar) { 
    containerView = getActivity().findViewById(fragmentId); 
    mDrawerLayout = drawerLayout; 
    mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) { 
     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      if (!mUserLearnedDrawer) { 
       mUserLearnedDrawer = true; 
       saveToPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, mUserLearnedDrawer + ""); 
      } 
      getActivity().invalidateOptionsMenu(); 
     } 

     @Override 
     public void onDrawerClosed(View drawerView) { 
      super.onDrawerClosed(drawerView); 
      getActivity().invalidateOptionsMenu(); 
     } 
    }; 
    if (!mUserLearnedDrawer && !mFromSavedInstanceState) { 
     mDrawerLayout.openDrawer(containerView); 
    } 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 
    mDrawerLayout.post(new Runnable() { 
     @Override 
     public void run() { 
      mDrawerToggle.syncState(); 
     } 
    }); 
} 

public static void saveToPreferences(Context context, String preferenceName, String preferenceValue) { 
    SharedPreferences sharedPreferences = context.getSharedPreferences(PRE_FILE_NAME, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString(preferenceName, preferenceValue); 
    editor.apply(); 
} 

    public static String readFromPreferences(Context context, String preferenceName, String defaultValue) { 
     SharedPreferences sharedPreferences = context.getSharedPreferences(PRE_FILE_NAME, Context.MODE_PRIVATE); 
     return sharedPreferences.getString(preferenceName, defaultValue); 
    } 
} 

Information.java

public class Information { 
    String title; 
} 

MyAdapter.java

import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
import java.util.Collections; 
import java.util.List; 

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>   { 

private LayoutInflater inflater; 
List<Information> data = Collections.emptyList(); 

public MyAdapter(Context context, List<Information> data){ 
    inflater = LayoutInflater.from(context); 
    this.data = data; 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = inflater.inflate(R.layout.custom_row, parent, false); 
    MyViewHolder holder = new MyViewHolder(view); 
    return holder; 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    Information current = data.get(position); 
    holder.title.setText(current.title); 
} 

@Override 
public int getItemCount() { 
    return 0; 
} 

class MyViewHolder extends RecyclerView.ViewHolder{ 
    TextView title; 
    public MyViewHolder(View itemView) { 
     super(itemView); 
     title = (TextView) itemView.findViewById(R.id.listItem); 
    } 
    } 
    } 

custom_row.xml在layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal"> 

<TextView 
    android:id="@+id/listItem" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:textColor="@color/textPrimaryColor"/> 
</LinearLayout> 

naviagataion_drawer.xml佈局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFF"  
    <android.support.v7.widget.RecyclerView 
     android:id="@+id/drawerList" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    </android.support.v7.widget.RecyclerView> 
</RelativeLayout> 

string.xml

<resource> 
    <string name="action_settings">Settings</string> 
    <string name="drawer_open" translatable="false">Open</string> 
    <string name="drawer_close" translatable="false">Close</string> 
    <array name="drawer_item_array"> 
    <item>Read</item> 
    <item>Create</item> 
    <item>Edit</item> 
    <item>Questionnaire</item> 
    <item>Settings</item> 
    </array> 
</resource> 

我也跟着[URL] https://www.youtube.com/watch?v=OoCySqneJno&index=14&list=PLonJJ3BVjZW6CtAMbJz1XD8ELUs1KXaTD 他在N中使用數組avigationDrawer.java,但我使用string.xml中的數組

謝謝你的幫助。

+0

請問你MyAdapter樣子? – Christopher 2015-02-09 13:25:25

+0

對不起,我添加了。 – 2015-02-11 05:30:57

回答

0

在你的類MyAdapter你寫道:

@Override 
public int getItemCount() { 
    return 0; 
} 

這應該是

@Override 
public int getItemCount() { 
    return data.size(); 
}