在创建后立即在导航抽屉中设置粗体文本(在任何选择之前)

pie*_*ier 2 android navigation-drawer

我有一个类似谷歌应用程序的导航抽屉(播放音乐,播放电影等..)

一切都很好; 我唯一的问题是:在创建抽屉之后以及任何选择或点击完成之前,我无法弄清楚如何将文本设置为BOLD!执行
后我设置粗体没有问题onItemClick,但是如何在创建抽屉后立即执行此操作?
我试图从抽屉里面的列表中获取View引用,但它不起作用.

有人能帮我吗?

这是我的导航抽屉代码

        mNavDrawerStrings = getResources().getStringArray(R.array.action_bar_list);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.left_navigation_drawer);

    // Set the adapter for the list view
    mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.navigation_drawer_list_item, mNavDrawerStrings));

    mDrawerList.setItemChecked(0, true);
    mDrawerList.setSelection(0);

    NavigationDrawerItemClickListener navDrawerClickListener
        = new NavigationDrawerItemClickListener(this, mDrawerList, mDrawerLayout); 

    mDrawerList.setOnItemClickListener(navDrawerClickListener);

    // enable ActionBar app icon to behave as action to toggle nav drawer
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    mDrawerLayout.setDrawerShadow
        (R.drawable.drawer_shadow, GravityCompat.START);

    mDrawerToggle = new CustomActionBarDrawerToggle(this, mDrawerLayout);
    mDrawerLayout.setDrawerListener(mDrawerToggle);
Run Code Online (Sandbox Code Playgroud)

Mar*_*rqs 13

您需要保留选择,以便即使选定项目超出屏幕,所选项目也会保持选中状态.要更改文本颜色和项目背景,您可以使用颜色/可绘制状态列表资源 http://developer.android.com/guide/topics/resources/color-list-resource.html

但是,如果您想要做更多的事情,则需要提供自定义适配器.像这样的东西:

public class MyArrayAdapter extends ArrayAdapter<String>{

    private int selectedItem;

    public MyArrayAdapter(Context context, int resource, String[] objects) {
        super(context, resource, objects);
    }

    public void selectItem(int selectedItem){
        this.selectedItem = selectedItem;
        notifyDataSetChanged();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = super.getView(position, convertView, parent);
        ((TextView)convertView).setTypeface(null, position == selectedItem ? Typeface.BOLD : Typeface.NORMAL);

        return convertView;
    }
}
Run Code Online (Sandbox Code Playgroud)

并在onItemClick()中:

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long arg3) {
    ((MyArrayAdapter)adapterView.getAdapter()).selectItem(position);
}
Run Code Online (Sandbox Code Playgroud)