【问题标题】:OnItemClickListener that can have more or less items可以有更多或更少项目的 OnItemClickListener
【发布时间】:2016-12-23 13:48:57
【问题描述】:

我有一个带有数据库的服务器。在我的数据库中,我目前有 25 个项目,但将添加项目并删除它们。

通过简单地编写一个 switch n case 方法,我在 java 中有 ListView 为 25 个项目工作。

但是我如何编写它,以便在我的数据库中添加或删除项目时,它会将额外的案例项目添加到我的ItemListener

这就是我目前的方式,但我不想每次添加新项目时都更新我的应用程序

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    switch(i){
                        case 0:
                            break;
                    }
                }
            });

编辑

这就是我使用 firebase 将项目添加到列表中的方式

mrootref = new Firebase("my firebaselink");
lv = (ListView)findViewById(R.id.lvnames);

mrootref.child("Mydatabase name").addChildEventListener(new ChildEventListener() {

    @Override
    public void onChildAdded(DataSnapshot snapshot, String s) {
        final ArrayAdapter<String> jlistAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, webstreamsArray);
        lv.setAdapter(jlistAdapter);

        String streamname = snapshot.child("name").getValue(String.class);
        jlistAdapter.notifyDataSetChanged();
        webstreamsArray.add(streamname);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                switch(i){
                    case 0:
                        break;
                }
            }
        });
    }
}

编辑

下面是我的数据库结构的屏幕截图。然后我的应用程序调用数据库的名称部分并将它们填充到我的列表视图中。如果一个项目被删除,它会从我的列表视图中删除该项目。我想使用“url”项,以便在单击名称项时打开 url 项

【问题讨论】:

  • 你为什么要使用switch case
  • 你会推荐什么@NJ
  • 您不能在运行时动态添加代码。适配器中的所有项目都将收到完全相同的事件。您不需要开关位置
  • 动态添加代码?
  • 我在我的代码中添加了更多内容,看看是否有帮助

标签: java android listview firebase-realtime-database onitemclicklistener


【解决方案1】:

这是我在你们的帮助下得出的结论

 Urlname = snapshot.child("url").getValue(String.class);
            jlistAdapter.notifyDataSetChanged();
            webstreamsArray.add(streamname);
            urlList.add(Urlname);
            lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {


                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {


                   WebView webView = (WebView) findViewById(R.id.webView1);
                    webView.setVisibility(View.VISIBLE);
                    webView.getSettings().setJavaScriptEnabled(true);
                    webView.loadUrl(urlList.get(i));

                }
            });
        }

【讨论】:

    猜你喜欢
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2014-03-07
    相关资源
    最近更新 更多