活动切换的可点击列表视图

时间:2017-09-14 07:41:52

标签: android listview android-intent onclicklistener

我在我的应用程序中使用listviews而不是button。我想在listview而不是setOnItemClickListener()上设置OnClickListener()。 这是我的代码:

listview.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(getApplicationContext(), BillingActivity1.class));
        }
    });

有人可以建议一个方法来做OnClickListener()吗?

谢谢

4 个答案:

答案 0 :(得分:2)

好的,我理解你的问题。

让我们分析案例:

带有项目的Listview

如果您的ListView有一些项目,那么好方法是设置onItemClickListener,并根据点击的项目执行某些操作。你也可以为每个项目做同样的事情而不用考虑哪个项目被按下了,但这仍然是最好的方法。

没有项目的ListView

From Docs

  

当没有数据要显示时,列表视图将被隐藏。

ListView(通常)将height设置为wrap_content,因此即使将onClickListener设置为空列表也行不通,因为列表会导致高度为0,无法点击(您无法点击没有height的视图,因为它不可见。)

对空ListView

执行操作

如果看起来如此,您需要在ListView上做一些事情,即使它是空的,只需在您的FloatingActionButton添加一个按钮或Activity,然后再使用这些内容:您可以在任何情况下都保留按钮(例如“添加项目”按钮),或者只有在ListView为空时才能使其可见。类似的东西:

XML

<Button
     android:id="@+id/buttonEmptyListStuffs"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="List is empty, click me!"
     android:visibility="gone"/>

活性

//init the button and do other stuffs
...
buttonEmptyListStuffs.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       //go to activity 2
    }
});
...
List<MyListViewItem> myListViewItems = //init your list of items for the listView
buttonEmptyListStuffs.setVisibility(myListViewItems.size() > 0 ? View.GONE : View.VISIBLE);
...

注意:我在没有编译器的情况下手工编写了这段代码,所以它可能不完美,只需采用它背后的概念

正如Pskink从评论中所说的

我忘了提到ListView有setEmptyView(View),它允许你为Listview设置一个自定义布局,如果它是空的。 Refer to his link获得了一个很好的教程

答案 1 :(得分:0)

使用此:

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            startActivity(new Intent(getApplicationContext(), BillingActivity1.class));
        }
    });

答案 2 :(得分:0)

如果你真的想要处理点击listView的任何一点。您可以将列表放在FrameLayoutLinearLayout内,然后在布局上添加onClickListener。

findViewById(R.id.my_parent_list_layout).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // DO your stuff
    }


});

答案 3 :(得分:0)

如果列表项目计数为空,则通过按钮(使用列表视图和按钮切换可见性)动态地更改列表视图的可见性,并将单击操作提供给按钮。