未分配给列表视图项的字符串

Posted

技术标签:

【中文标题】未分配给列表视图项的字符串【英文标题】:Strings not being assigned to list view items 【发布时间】:2015-09-14 08:45:53 【问题描述】:

我正在尝试使用 strings.xml 文件中的一些字符串作为列表视图的项目名称,但在部署期间,我的应用程序将无法运行。我已经在 Internet 的许多领域寻找相关教程,但所有这些都只显示了硬编码的字符串。有谁知道我的代码有什么问题以及如何使用字符串而不是硬编码来修复它?

    public class FragmentLineChooserList extends android.support.v4.app.Fragment 

        ListView list_linechooser;

        String[] listContent = 
                getResources().getString(R.string.item_0),
                getResources().getString(R.string.item_1),
                getResources().getString(R.string.item_2)
        ;

        private boolean mTwoPane;

        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
            View v = inflater.inflate(R.layout.fragment_line_chooser_list, container, false);

            list_linechooser = (ListView)v.findViewById(R.id.list_linechooser);
        MyColoringAdapter adapter = new MyColoringAdapter(getActivity(),listContent);
        list_linechooser.setAdapter(adapter);
       );

        return v;
    

    private class MyColoringAdapter extends ArrayAdapter<String> 
        private final Context context;
        private final String[] values;

        public MyColoringAdapter(Context context, String[] values) 
            super(context, R.layout.list_item, values);
            this.context = context;
            this.values = values;
        

        @Override
        public View getView(int position, View convertView, ViewGroup parent) 
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View rowView = inflater.inflate(R.layout.list_item, parent, false);
            TextView textView = (TextView) rowView.findViewById(R.id.list_item);
            textView.setText(values[position]);
            int textColorId = R.color.white; // Default color
            switch (position) 
                case 0:
                    textColorId = R.color.red; break;
                case 1:
                    textColorId = R.color.yellow; break;
                case 2:
                    textColorId = R.color.green; break;
            
            textView.setTextColor(getResources().getColor(textColorId));
            return rowView;
        
    

【问题讨论】:

getActivity().getResources().getString(R.string.item_0); 你的adapter 班级在哪里? @MD 那行不通 你能告诉我你有什么问题吗?有什么错误吗?如果是,请发布。 【参考方案1】:

喜欢

  String[] listContent = 
            getActivity().getResources().getString(R.string.item_0),
            getActivity().getResources().getString(R.string.item_1),
            getActivity().getResources().getString(R.string.item_2)
    ;

onCreateView(...)

【讨论】:

好的,非常感谢,现在可以了。问题是它不在onCreateView(...)

以上是关于未分配给列表视图项的字符串的主要内容,如果未能解决你的问题,请参考以下文章

为啥视图行未显示在 item.xml 中

Flex 在列表项的视图之间传递数据

显示空视图后过滤器列表未重新出现

Drupal 视图中自定义表记录项的编辑链接

未分配给父 UIViewController 视图属性时,UITableView 不滚动

listview 项目未在自定义适配器的 getview 方法中显示分配的值