2014-04-20 51 views
0

我想用我的導航抽屜我的自定義適配器,但我不知道如何添加它,因此它可以使用它。設置導航抽屜的自定義適配器

任何指導將不勝感激,謝謝。

這是我的自定義適配器:

private class SampleItem { 
    public String tag; 
    public int iconRes; 

    public SampleItem(String tag, int iconRes) { 
     this.tag = tag; 
     this.iconRes = iconRes; 
    } 
} 

public class SampleAdapter extends ArrayAdapter<SampleItem> { 

    public SampleAdapter(Context context) { 
     super(context, 0); 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(
        R.layout.row, null); 
     } 
     ImageView icon = (ImageView) convertView 
       .findViewById(R.id.ImageNavDrawer); 
     icon.setImageResource(getItem(position).iconRes); 
     TextView title = (TextView) convertView 
       .findViewById(R.id.NavListTextview); 
     title.setText(getItem(position).tag); 

     return convertView; 
    } 

} 

抽屜如何設置:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    mDrawerListView = (ListView) inflater.inflate(
      R.layout.fragment_navigation_drawer, container, false); 
    mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      selectItem(position); 
     } 
    }); 
    mDrawerListView.setAdapter(new ArrayAdapter<String>(
      getActionBar().getThemedContext(), 
      R.layout.row, 
      R.id.NavListTextview, 
      new String[]{ 
        getString(R.string.1), 
        getString(R.string.2), 
        getString(R.string.3), 
      })); 
    mDrawerListView.setItemChecked(mCurrentSelectedPosition, true); 
    return mDrawerListView; 
} 

iv'e如何使用在其他項目中適配器:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.list, null); 

} 

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    SampleAdapter adapter = new SampleAdapter(getActivity()); 
    { 

     adapter.add(new SampleItem("Archietecture", 
       R.drawable.archietecture)); 
     adapter.add(new SampleItem("Art", R.drawable.art)); 
     adapter.add(new SampleItem("Cinema", R.drawable.cinema)); 
     adapter.add(new SampleItem("Discoveries", R.drawable.discoveries)); 
     adapter.add(new SampleItem("Events", R.drawable.events)); 
     adapter.add(new SampleItem("Literature", R.drawable.literature)); 
     adapter.add(new SampleItem("Music", R.drawable.music)); 
     adapter.add(new SampleItem("Nature", R.drawable.nature)); 
     adapter.add(new SampleItem("Politics", R.drawable.politics)); 
     adapter.add(new SampleItem("Science", R.drawable.science)); 
     adapter.add(new SampleItem("Sports", R.drawable.sports)); 
     adapter.add(new SampleItem("Technology", R.drawable.technology)); 

    } 
    setListAdapter(adapter); 
} 

private class SampleItem { 
    public String tag; 
    public int iconRes; 

    public SampleItem(String tag, int iconRes) { 
     this.tag = tag; 
     this.iconRes = iconRes; 
    } 
} 

public class SampleAdapter extends ArrayAdapter<SampleItem> { 

    public SampleAdapter(Context context) { 
     super(context, 0); 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(
        R.layout.row, null); 
     } 
     ImageView icon = (ImageView) convertView 
       .findViewById(R.id.row_icon); 
     icon.setImageResource(getItem(position).iconRes); 
     TextView title = (TextView) convertView 
       .findViewById(R.id.row_title); 
     title.setText(getItem(position).tag); 

     return convertView; 
    } 

} 
+0

檢查此鏈接http://www.recursiverobot.com/post/59404388046/implementing-the-new-navigation-drawer-in-android – Krish

回答

2

好如果您要使用自定義適配器,則必須將其設置爲您的ListView,而不是使用正常的ArrayAdapter。因此,而不是這樣的:

mDrawerListView.setAdapter(new ArrayAdapter<String>(getActionBar().getThemedContext(), R.layout.row, R.id.NavListTextview, new String[]{getString(R.string.1), getString(R.string.2), getString(R.string.3)})); 

做到這一點:

mDrawerListView.setAdapter(new SampleAdapter(context)); 

但您的自定義SampleAdapter似乎沒有被尚未完成。好像你不得不延長一點點。

+0

我在其他項目中使用此適配器,它似乎工作它是,我需要做些什麼修改才能完成這項工作?謝謝。 – Jack

+0

我只想讓這個適配器與我的導航抽屜一起工作,我已經更新了我的問題,以便您可以看到我是如何在另一個項目中實現它的,也許您會知道我如何才能在此項目中使用它。 – Jack