当前位置: 首页 > 面试题库 >

将添加的行样式化为ArrayAdapter ListView Android

鲜于仰岳
2023-03-14
问题内容

我有一个ListView要与一起使用ArrayAdapter添加不同样式的行的。这些行是在我的应用程序中的不同状态下创建的,并且应根据不同状态对行进行样式设置(例如颜色和填充物)。

这是一些伪代码:

创建时:

mArrayAdapter = new ArrayAdapter(this, R.layout.message);
mView = (ListView) findViewById(R.id.in);
mView.setAdapter(mArrayAdapter);

在不同的状态下(由另一个线程使用MessageHandler触发),在包含消息的列表中添加一行:

mArrayAdapter.add("Message");

效果很好,根据状态不同,消息会在列表中弹出,但是我想让行的样式不同。这该怎么做?ArrayAdapter使用自定义的Add()方法创建自定义的解决方案吗?


问题答案:

您要做的是创建一个自定义ArrayAdapter并覆盖该getView()方法。在那里,您可以决定是否对行应用其他样式。例如:

class CustomArrayAdapter extends ArrayAdapter {
    CustomArrayAdapter() {
        super(YourActivity.this, R.layout.message);
    }

    public View getView(int position, View convertView,
                                            ViewGroup parent) {
        View row=convertView;

        if (row==null) {                                                    
            LayoutInflater inflater=getLayoutInflater();

            row=inflater.inflate(R.layout.message, parent, false);
        }

        // e.g. if you have a TextView called in your row with ID 'label'
        TextView label=(TextView)row.findViewById(R.id.label);
        label.setText(items[position]);

        // check the state of the row maybe using the variable 'position'
        if( I do not actually know whats your criteria to change style ){
            label.setTextColor(blablabla);
        }

        return(row);
    }
}


 类似资料:
  • 我在PrimeFaces3.5中使用JSF。我使用而不使用属性,而是显式地使用和创建行和列,如展示案例(http://www.primefaces.org/showcase/ui/panelgrid.jsf)所示。 现在我需要在一些CSS类的帮助下对一行进行不同的样式设置。但是要么我错过了它,要么就是没有办法向添加类?!我甚至可以设置属性,但在呈现的输出中会忽略它...

  • 添加样式的方案 在 dva 中,所有的页面都是基于组件的。因此,我们希望样式依附于组件,不同组件的样式相互之间不会造成污染。 在 dva 中,我们推荐使用 CSS Modules 的解决方案。配合 webpack 的 css-loader 进行打包,会为所有的 class name 和 animation name 加 local scope,避免潜在冲突。 样式引入示例 参考 example 中

  • 现在其它的一切都可以正常工作,是时候给应用添加样式了。只需在之前创建的 static 文件夹中创建一个名为 style.css 的样式表: body { font-family: sans-serif; background: #eee; } a, h1, h2 { color: #377BA8; } h1, h2 { font-family:

  • shadow DOM 可以包含 <style> 和 <link rel="stylesheet" href="…"> 标签。在后一种情况下,样式表是 HTTP 缓存的,因此不会为使用同一模板的多个组件重新下载样式表。 一般来说,局部样式只在 shadow 树内起作用,文档样式在 shadow 树外起作用。但也有少数例外。 :host :host 选择器允许选择 shadow 宿主(包含 shado

  • 我将Git提交与cy.add()挂钩,并为每个新节点添加背景色。再一次,我希望只将新添加的节点设置为红色(或者设置某种脉动行为来表示它是新添加的节点),并在默认之前将所有颜色设置为绿色。我绝对觉得我错过了一些简单的东西...任何帮助都将不胜感激!

  • 问题内容: 我正在使用CMS,它阻止我们编辑头部。我需要在标记之后立即向网站添加CSS样式表。有没有办法用JS做到这一点,我可以在页面底部添加一个脚本(我可以在标记之前添加脚本),然后将样式表注入到头部? 问题答案: 更新 :根据规格,该元素不允许出现在体内。但是,大多数浏览器仍会很好地呈现它。因此,要回答的意见问题- 一个真正具有添加到页面,而不是的。 或使用jQuery轻松一点 原始答案 :