Click不能在List Item Listview android上运行

问题描述 投票:31回答:10

我用listview实现了android ListActivity。在这里我遇到的问题是,当我点击列表项时,当闪光颜色也没有出现时,没有执行任何动作,即橙色。所以你对我的问题的这个答案有任何想法。

@Override
protected void onListItemClick(ListView l, View v, int position, long id) 
{
    super.onListItemClick(l, v, position, id);
    Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT)
            .show();

}

我把这段代码也放到了Main ListActivity中。

java android android-listview listactivity
10个回答
114
投票

你需要注意的第一件事是,只要你的ImageButtons元素中存在像Buttons或ListView这样的Clickable元素,它们就会控制点击事件。所以你的ListView将没有机会接受点击事件。

你只需要将你的ListView中的focusableButtonImageButton属性设置为false。但是它们仍然可以正常工作,而且ListView的onListItemClick也可以工作。

试试这个,

        <Button  android:id="@+id/textsize_increaser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/back_button"
        android:focusable="false"
        android:text=" A + "/>

在这里,我添加了这个android:focusable="false",它工作正常。试试吧。


0
投票
listItemButton.setFocusable(false);
listItemButton.setFocusableInTouchMode(false);

在适配器中设置以上内容。它不适用于XML


9
投票

您是否将ListView的选择模式设置为SINGLE:

     listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

如果列表项中有任何可点击的imageview或textview或按钮,则使它们不可聚焦(在Adapter类中):

        yourButton.setFocusable(false);
        yourButton.setFocusableInTouchMode(false);

4
投票

你在使用自定义适配器吗?并使用按钮或任何视图将列表列表视图焦点作为子项进行膨胀布局,然后它将无法正常工作。一定要设置

    android:focusable="false"

到xml文件中的这种视图。希望这对你有用。


4
投票

在listactivity java文件中设置它

listview1.setFocusable(false);

1
投票

Eclipse建议我在布局xml中将textIsSelectable="true"添加到我的TextViews中,用于列表视图。

好吧,如果要单击列表中的项目,则不应添加这些标记。


1
投票

确保你是

  1. 不使用列表视图的滚动视图
  2. 不在列表视图的行项目布局中使用滚动视图

如果滚动视图出现在上述任何位置,请将其删除


0
投票

参考这篇文章寻求解决方案:

Click is not working on the Listitem Listview android

View v = parent.getChildAt(position);
parent.requestChildFocus(v,view);
v.setBackground(res.getDrawable(R.drawable."Some drawable for clicked row"));

int count = parent.getChildCount();
for(int i=0; i<count; i++)
{
   if(i!=position)
   {
     v = parent.getChildAt(i);
     v.setBackground(res.getDrawable(R.drawable."some drawable for not clicked row));
   }
}

0
投票
listview.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int pos,
                    long id) {
                Toast.makeText(v.getContext(), exm.get(pos).getDefinition(),
                        Toast.LENGTH_SHORT).show();


            }
        });

0
投票

实际上有一个参数用于防止子视图获得焦点,只需在父布局中添加以下内容:

android:descendantFocusability="blocksDescendants"

正如文档所述:

ViewGroup将阻止其后代获得焦点。

© www.soinside.com 2019 - 2024. All rights reserved.