ListView不显示任何添加的项目

时间:2017-03-17 19:52:36

标签: android listview

我正在尝试向ListView添加一些项目 - 它们没有显示。

我意识到这个问题已被多次提出,但我试图遵循我在那里找到的任何建议 - 没有一个对我有效。

以下是公共类的 onCreate 方法的内容MyListActivity扩展AppCompatActivity - >

word = browser.find_element_by_xpath("//tspan[normalize-space(.)='Res.']")

这是我的关联布局XML - >

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
((EditText) findViewById(R.id.editText2)).setInputType(InputType.TYPE_NULL);

ListView view = (ListView) findViewById(R.id.myList);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
view.setAdapter(adapter);
adapter.add("aaaaa");
adapter.add("bbbbb");
adapter.notifyDataSetChanged();

嗯,就像我说的那样,“aaaa”和“bbbb”并没有显示在任何地方。

提前感谢任何建议!

3 个答案:

答案 0 :(得分:0)

我看到你正在初始化适配器而没有引用它的项目集,这可能是问题所在。请尝试使用此代码:

分类字段:

$(".show-more a").on("click", function() {
    $("ul li").toggleClass("hidden");
    if ($(this).text() == "Show more") {
        $(this).text("Show less");
    } else {
        $(this).text("Show more");
    }
});

onCreate方法:

private List<String> items;

或者你可以简单地用两个元素初始化项目列表,而不是稍后添加它们。

答案 1 :(得分:0)

我不确定,但我认为有时UI元素修改可能会在另一个线程上执行。因此,也许当你添加元素然后notifyDataSetChanged()时,视图既没有显示也没有显示,因此,什么也没做。然后适配器尝试显示某些内容并且没有元素。

我建议两件事: - 首先,尝试在适配器声明和The server encountered an internal error that prevented it from fulfilling this request: Servlet.init() for servlet spring-ws threw exception javax.servlet.ServletException: Servlet.init() for servlet spring-ws threw exception org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) psiprobe.Tomcat80AgentValve.invoke(Tomcat80AgentValve.java:45) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:676) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:745) 之前添加元素到适配器列表(如Juan Martinez答案)。然后创建适配器,设置适配器。 - 其次,尝试在“onStart”而不是“onCreate()”上添加元素和notifyDataSetChanged。

第一个测试将允许您查看问题是否在构造函数,线程等中。第二个测试将告诉您是否可以稍后添加元素以便在第一次测试显示您无法立即添加元素时使事情正常工作在“setAdapter”之后。

您的代码似乎是以示例或少量测试为例,因此,在不知道您真正需要添加对象的位置以及显示问题的情况下,可能很难为您提供准确的代码。

on Oncreate方法:

setAdapter(adapter);

也覆盖onStart

items = new ArrayList<>();

    items.add("aaaaa");
    adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
    view.setAdapter(adapter);
    items.add("bbbbb");
    adapter.notifyDataSetChanged();

如果您的视图仅显示aaaa和cccc,则无法在setAdapter之后添加项目。如果还没有显示,则问题出在其他地方。

答案 2 :(得分:0)

您的活动代码非常完美。 问题位于布局文件中,非常愚蠢。

您将主要 LinearLayout 背景设置为background_dark。您的 ListView文字颜色也很暗。所以它不可见。

尝试将背景颜色设为background_light,您的ListView将可见。

或者,如果要更改ListView文本颜色,请执行以下操作:

1)创建自定义布局,如下所示:(custom_list_layout.xml)

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tvlist"
    android:textColor="@color/white"
    android:layout_width="fill_parent"
    android:gravity="center"
    android:layout_height="fill_parent"/>

2)将其设置为阵列适配器

adapter = new ArrayAdapter<>(this, android.R.layout.custom_list_layout);

然后在深色背景中可以看到带有白色文本的ListView。希望这会有所帮助。