如何在Android中打开/关闭导航抽屉时立即刷新列表

2024-01-04

我已经创建了导航抽屉并在列表中显示项目。我的列表是静态的,但我正在显示点。因此,当用户选择列表中的项目并进行一些活动时,他就会获得积分。所以我想在他得到后立即更新积分。我怎样才能做到这一点。/

下面是我的代码:

活动类别:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home_page);
    // Initializing
    dataList = new ArrayList<DrawerItem>();
    mTitle = mDrawerTitle = getTitle();
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.left_drawer);

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

    sharedPreferences = getSharedPreferences(Constant.LOGIN_CHECK,
            Constant.PRIVATE_MODE);
    editSharedPreferences = sharedPreferences.edit();
    if (sharedPreferences.getBoolean(Constant.IS_ALREADY_LOGIN,
            false)) {
        loginInBackground();
    }
    String p1 = sharedPreferences.getString(Constant.USERS_POINTS,
            "");
    String p2 = sharedPreferences.getString(
            Constant.LEVEL_ONE_POINTS, "");
    String p3 = sharedPreferences.getString(
            Constant.LEVEL_TWO_POINTS, "");

    String pointText = " POINTS";
    dataList.add(new DrawerItem("OVERVIEW", R.drawable.ic_action_eye,
            Color.DKGRAY, Color.TRANSPARENT));
    dataList.add(new DrawerItem("EARN POINTS", R.drawable.ic_action_dollor,
            Color.GREEN, Color.TRANSPARENT));
    dataList.add(new DrawerItem("MY POINTS ", p1 + pointText, Color.BLACK,
            Color.BLACK));
    dataList.add(new DrawerItem("REFERRALS POINTS LV1 ", p2 + pointText,
            Color.BLACK, Color.BLACK));
    dataList.add(new DrawerItem("REFERRALS POINTS LV2 ", p3 + pointText,
            Color.BLACK, Color.BLACK));
    dataList.add(new DrawerItem("WITHDRAW REWARDS",
            R.drawable.ic_action_home, Color.DKGRAY, Color.TRANSPARENT));
    dataList.add(new DrawerItem("MY PROFILE", R.drawable.ic_action_settings,
            Color.DKGRAY, Color.TRANSPARENT));
    dataList.add(new DrawerItem("HELP", R.drawable.help_d, Color.DKGRAY,
            Color.TRANSPARENT));

    adapter = new CustomDrawerAdapter(this, R.layout.custom_drawer_item,
            dataList);

    mDrawerList.setAdapter(adapter);

    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            R.drawable.ic_drawer, R.string.drawer_open,
            R.string.drawer_close) {
        public void onDrawerClosed(View view) {
            getActionBar().setTitle(mTitle);
            invalidateOptionsMenu(); // creates call to
                                        // onPrepareOptionsMenu()
        }

        public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(mDrawerTitle);
            invalidateOptionsMenu(); // creates call to
                                        // onPrepareOptionsMenu()
        }
    };

    mDrawerLayout.setDrawerListener(mDrawerToggle);

    if (savedInstanceState == null) {
        SelectItem(0);
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    String pointsLeft = sharedPreferences.getString(
            Constant.POINTS_LEFT, "");
    getMenuInflater().inflate(R.menu.main, menu);
    this.menu = menu;
    MenuItem pointsMenu = menu.findItem(R.id.action_settings);
    pointsMenu.setTitle(pointsLeft + " Points");
    return true;
}

public void SelectItem(int possition) {

    Fragment fragment = null;
    Bundle args = new Bundle();
    switch (possition) {
    case 0:
        fragment = new FragmentWelcome();
        args.putString(FragmentWelcome.ITEM_NAME, dataList.get(possition)
                .getItemName());
        args.putInt(FragmentWelcome.IMAGE_RESOURCE_ID,
                dataList.get(possition).getImgResID());
        fragment.setArguments(args);
        FragmentManager frgManager0 = getFragmentManager();
        frgManager0.beginTransaction()
                .replace(R.id.content_frame, fragment).commit();
        break;
    case 1:
        fragment = new FragmentAppList();
        args.putString(FragmentWelcome.ITEM_NAME, dataList.get(possition)
                .getItemName());
        args.putInt(FragmentWelcome.IMAGE_RESOURCE_ID,
                dataList.get(possition).getImgResID());
        fragment.setArguments(args);
        FragmentManager frgManager1 = getFragmentManager();
        frgManager1.beginTransaction()
                .replace(R.id.content_frame, fragment).commit();
        break;
    case 5:
        fragment = new FragmentRedeemPoints();
        args.putString(FragmentWelcome.ITEM_NAME, dataList.get(possition)
                .getItemName());
        args.putInt(FragmentWelcome.IMAGE_RESOURCE_ID,
                dataList.get(possition).getImgResID());
        fragment.setArguments(args);
        FragmentManager frgManager2 = getFragmentManager();
        frgManager2.beginTransaction()
                .replace(R.id.content_frame, fragment).commit();
        break;
    case 6:
        fragment = new SettingsFragment();
        args.putString(FragmentWelcome.ITEM_NAME, dataList.get(possition)
                .getItemName());
        args.putInt(FragmentWelcome.IMAGE_RESOURCE_ID,
                dataList.get(possition).getImgResID());
        fragment.setArguments(args);
        FragmentManager frgManager6 = getFragmentManager();
        frgManager6.beginTransaction()
                .replace(R.id.content_frame, fragment).commit();
        break;
    case 7:
        fragment = new HelpFragment();
        args.putString(FragmentWelcome.ITEM_NAME, dataList.get(possition)
                .getItemName());
        args.putInt(FragmentWelcome.IMAGE_RESOURCE_ID,
                dataList.get(possition).getImgResID());
        fragment.setArguments(args);
        FragmentManager frgManager7 = getFragmentManager();
        frgManager7.beginTransaction()
                .replace(R.id.content_frame, fragment).commit();
        break;

    default:

        break;
    }

    mDrawerList.setItemChecked(possition, true);
    mDrawerLayout.closeDrawer(mDrawerList);

}

@Override
public void setTitle(CharSequence title) {
    mTitle = title;
    getActionBar().setTitle(mTitle);
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    mDrawerToggle.onConfigurationChanged(newConfig);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }

    return false;
}

private class DrawerItemClickListener implements
        ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        SelectItem(position);

    }
}

自定义抽屉适配器:

public class CustomDrawerAdapter extends ArrayAdapter<DrawerItem> {

Context context;
List<DrawerItem> drawerItemList;
int layoutResID;

public CustomDrawerAdapter(Context context, int layoutResourceID,
        List<DrawerItem> listItems) {
    super(context, layoutResourceID, listItems);
    this.context = context;
    this.drawerItemList = listItems;
    this.layoutResID = layoutResourceID;

}

@SuppressWarnings("static-access")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    DrawerItemHolder drawerHolder;
    View view = convertView;

    if (view == null) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        drawerHolder = new DrawerItemHolder();

        view = inflater.inflate(layoutResID, parent, false);
        drawerHolder.ItemName = (TextView) view
                .findViewById(R.id.drawer_itemName);
        drawerHolder.icon = (ImageView) view.findViewById(R.id.drawer_icon);
        drawerHolder.pointsText = (TextView) view
                .findViewById(R.id.get_login);
        drawerHolder.divider = view.findViewById(R.id.dividerView);
        drawerHolder.itemLayoutColor = (LinearLayout) view
                .findViewById(R.id.itemLayoutColor);
        view.setTag(drawerHolder);

    } else {
        drawerHolder = (DrawerItemHolder) view.getTag();

    }

    DrawerItem dItem = (DrawerItem) this.drawerItemList.get(position);
    if (dItem.getPointText() == null) {
        drawerHolder.icon.setImageDrawable(view.getResources().getDrawable(
                dItem.getImgResID()));
        drawerHolder.pointsText.setVisibility(view.GONE);
    } else {
        drawerHolder.pointsText.setText(dItem.getPointText());
        }
    drawerHolder.itemLayoutColor.setBackgroundColor(dItem.layoutColorCode);
    drawerHolder.divider.setBackgroundColor(dItem.colorCode);
    drawerHolder.ItemName.setText(dItem.getItemName());

    return view;
}

private static class DrawerItemHolder {
    TextView ItemName;
    ImageView icon;
    TextView pointsText;
    View divider;
    LinearLayout itemLayoutColor;
}
 }

最后我使用下面的代码解决了这个问题。我想回答这个问题,以便其他人可以从中得到参考。 @用户3154663。也许这会帮助您解决您的问题:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
    if (drawerOpen) {
        dataList.remove(2);
        p1 = sharedPreferences.getString(Constant.USERS_POINTS, "");
        p2 = sharedPreferences.getString(Constant.LEVEL_ONE_POINTS,
                "");
        p3 = sharedPreferences.getString(Constant.LEVEL_TWO_POINTS,
                "");
        String pointText = " POINTS";
        dataList.add(2, new DrawerItem("MY POINTS ", p1 + pointText,
                Color.BLACK, Color.BLACK));
        dataList.remove(3);
        dataList.add(3, new DrawerItem("REFERRALS POINTS LV1 ", p2
                + pointText, Color.BLACK, Color.BLACK));
        dataList.remove(4);
        dataList.add(4, new DrawerItem("REFERRALS POINTS LV2 ", p3
                + pointText, Color.BLACK, Color.BLACK));


        adapter.notifyDataSetChanged();
        mDrawerList.setAdapter(adapter);
    }
    return super.onPrepareOptionsMenu(menu);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Android中打开/关闭导航抽屉时立即刷新列表 的相关文章

随机推荐

  • 在 C# 中从 IronPython 调用时引用 Python“导入”程序集

    对于 IronPython 我完全是个菜鸟 我需要从 ASP NET 网站调用 py 脚本 并具有以下代码 var ipy IronPython Hosting Python CreateRuntime dynamic test ipy U
  • Julia 是否对递归多态类型执行代码单态化?

    我注意到 在执行代码单态化的语言 例如 C Rust 等 中实现多态递归类型即使不是不可能 也是非常困难的 这通常是因为编译器需要为该类型的每个可能的实例化生成代码 这通常会导致无限递归 支持此功能的语言通常使用类型擦除 编译器不会尝试实例
  • 以编程方式即时断电?

    在网络环境中的 Windows XP Pro 下 按 Ctrl Alt Del 会出现 Windows 安全提示 如果按住 Ctrl 并单击关机 则会触发紧急关机 这似乎关闭系统的速度如此之快 甚至没有进程完成 即几乎就像您刚刚拔掉电源 长
  • iOS 上的 Jquery mobile 1.4 页面底部的固定元素隐藏焦点上的输入文本

    你好 我正在使用 Jquery mobile 1 4 构建 cordova 3 应用程序 我的 Mac 上的 Safari 和 Chrome 对以下内容没有任何问题 但是当我在真实设备或 iOS 模拟器上部署并想要在字段中输入时 我会发现页
  • cmake 的全局默认设置

    有没有类似的东西MAKEFLAGS环境变量为cmake 设置一些全局默认值 例如CMAKE INSTALL PREFIX 不 CMake 没有类似的环境变量 您可以通过 CMake 中的环境变量设置的所有内容均已记录here https c
  • 检查数组是否包含另一个数组中的元素

    我有两个数组A 0 1 2 and B 2 1 0 如何检查A中的数字是否存在于B中 NOTE includes不是ES6 而是ES2016 Mozilla 文档 https developer mozilla org en US docs
  • logback登录时如何处理磁盘已满错误?

    我正在使用 slf4j logback 来登录我们的应用程序 早些时候我们使用的是jcl log4j 最近搬到了这里 由于我们的应用程序中的日志记录量很大 生产环境中可能会出现磁盘已满的情况 在这种情况下 我们需要停止日志记录 应用程序应该
  • virtualenv 与该系统或可执行文件不兼容

    我对 Linux Ubuntu 和安装 Python 软件包相当陌生 我在使用 mkvirtualenv 时遇到问题并且无法解决 mkvirtualenv mysite70 New python executable in mysite70
  • Word Addin/OfficeJS - 检测光标是否位于图表元素上

    我希望能够检查文档光标是否位于 MS Word API 内的图表元素内 现在我有一个插入文本的应用程序 但是当我尝试将所述文本插入图表标题时 它会删除图表并将其替换为我插入的内容控件 我不想删除图表 而是想通过上下文检查光标是否位于图表内部
  • JS Array a['1'] 不会给出错误

    我已经声明了一个数组a 1 2 3 4 5 当我写作时a 1 it 返回 2这很好 但是当我写的时候a 1 它也是给我 2而不是给出错误 我原以为那里会出现错误 为什么会有这样的行为 所有属性名称都是字符串 如果您传递一个数字 它会在用于查
  • PrimeFaces 单击逐行展开

    I have 行扩展 http www primefaces org showcase ui data datatable expansion xhtml数据表
  • 使用自定义 SKAction 的 EaseOut 操作

    我有以下自定义 SKAction 工作 但作为 EaseIn 而不是 EaseOut 我想让它缓出 我使用网络上找到的各种缓动方程来纠正它 却惨遭失败 let duration 2 0 let initialX cameraNode pos
  • 谁能破译这段代码?

    以下是我在访问日志中看到的一些奇怪代码示例 有人能解码这个吗 例如 xb3 xe1 xdd H t xd5 xd2 xf0ml xf1 x10 xee xa0 xeaY xa5 xe7 x81d xd5 x1f xd9 QI xd9 xfb
  • teamcity 中的 Mercurial VCS 证书验证失败

    我尝试使用 teamcity 配置 Mercurial 但出现以下错误 stderr 中止 错误 ssl c 504 错误 14090086 SSL例程 SSL3 GET SERVER CERTIFICATE 证书验证失败 尝试了以下签名证
  • 提交后台作业并用结果更新阶段

    我对 JavaFX 2 完全是个菜鸟 今天早上开始使用我正在改编的 HelloWorld 我需要使用后台线程的结果更新文本节点 对于 JavaFX2 我需要注意什么特别的地方吗 或者提交可调用对象并更新文本就足够了 指向教程的指针将不胜感激
  • 如何使用面向对象技术验证 PHP 中的表单字段

    我创建了一个 验证 类来验证两个字段 即 名字 和 姓氏 它工作不正常 当字段为空时它显示错误 但是当我提交包含非空字段的表单时 错误仍然存 在 如何在表单提交时执行此操作
  • 在node.js中分离文件服务器和socket.io逻辑

    我对 Node js 相当陌生 我发现随着项目规模的增长 将项目分成多个文件非常复杂 我之前有一个大文件 它既充当文件服务器又充当多人 HTML5 游戏的 Socket IO 服务器 理想情况下 我希望将文件服务器 socket IO 逻辑
  • 如何在同一活动中实现具有不同项目列表和不同点击操作的多个微调器

    我想在Android中实现两个不同的微调器 微调器有不同的数据集 这是带有年龄的微调器 它使用定义的包含所有年龄范围的字符串数组 例如18 20 19 21 etc
  • 如何使用 play 框架渲染一个简单的 html 页面?

    这是使用 play 框架版本 2 渲染纯 html 文件的方法吗 我不想将其放在 public 文件夹中 因为稍后会添加一些动态信息 这是我的解决方案 在路线中 我做了一些配置 如下所示 GET hello html controllers
  • 如何在Android中打开/关闭导航抽屉时立即刷新列表

    我已经创建了导航抽屉并在列表中显示项目 我的列表是静态的 但我正在显示点 因此 当用户选择列表中的项目并进行一些活动时 他就会获得积分 所以我想在他得到后立即更新积分 我怎样才能做到这一点 下面是我的代码 活动类别 Override pro