迭代ListView导航项

时间:2015-08-10 20:16:06

标签: android navigation-drawer

我在Android Studio中使用Activity with Navigation Drawer项目模板,它会生成如下导航菜单:

mDrawerListView.setAdapter(new ArrayAdapter<String>(
                getActionBar().getThemedContext(),
                android.R.layout.simple_list_item_1,
                android.R.id.text1,
                new String[]{
                        getString(R.string.title_section1),
                        getString(R.string.title_section2),
                        getString(R.string.title_section3),
                }));

我正在寻找一种简单的方法来迭代这些项目并使用新信息更新其中一些项目的子文本。所以我尝试在android.R.layout.simple_list_item_1调用中将android.R.layout.simple_list_item_2更改为setAdapter(),并像这样循环遍历:

View v;
TextView tv;
for(int i = 0; i < mDrawerListView.getCount(); i++){
    v = mDrawerListView.getAdapter().getView(i,null,null);
    tv = (TextView) v.findViewById(android.R.id.text2);
    tv.setText("Sub Item");
}

哪个不起作用,但它不会抛出任何错误。我还尝试使用getChildAt()而不是通过getAdapter(),这导致了空引用错误。

解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我有同样的问题,但解决方案非常简单。您只需要覆盖适配器的getView方法:

public View getView(int position, View convertView, ViewGroup parent)

您可以保留此方法的正常行为并添加您想要执行的操作,例如,在您的情况下,您需要添加以下内容:

    @Override
        public View getView(int position, View convertView, ViewGroup parent) {
        View view= super.getView(position, convertView, parent);
        TextView tv= (TextView) view.findViewById(android.R.id.text2);
        tv.setText("sub text");
        }

这应该有用。