Click不能在Listitem Listview android上运行

时间:2012-07-23 09:42:33

标签: java android android-listview listactivity

我使用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。

10 个答案:

答案 0 :(得分:113)

您必须注意的第一件事是,只要您的ImageButtons元素中存在按钮或ListView等可点击元素,他们就会控制点击事件。所以你的ListView没有机会接受点击事件。

您只需将focusableButton设置为ListView中的ImageButtononListItemClick即可。但是它们仍可以正常工作,而且ListView的 <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"

这里我添加了这个{{1}},它运行正常。试试吧。

答案 1 :(得分:9)

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

     listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

如果您在列表项中有任何可点击的imageview或textview或按钮,那么使它们无法调焦(在Adapter类中):

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

答案 2 :(得分:4)

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

    android:focusable="false"

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

答案 3 :(得分:4)

在listactivity java文件中设置它

listview1.setFocusable(false);

答案 4 :(得分:1)

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

好吧,如果你想点击列表中的项目,那么就不应该添加这些标签。

答案 5 :(得分:1)

确保你

  1. 不使用带列表视图的滚动视图
  2. 在列表视图的行项目布局中不使用滚动视图
  3. 如果上面任何一个地方出现滚动视图,请将其删除

答案 6 :(得分: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));
   }
}

答案 7 :(得分: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();


            }
        });

答案 8 :(得分:0)

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

android:descendantFocusability="blocksDescendants"

正如文档所述:

  

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

答案 9 :(得分:0)

listItemButton.setFocusable(false);
listItemButton.setFocusableInTouchMode(false);

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