当前位置: 首页 > 知识库问答 >
问题:

无法在列表视图中选择行在弹出窗口中4.1但工作在Android 5.0

堵茂勋
2023-03-14

我在我的页面有一个弹出窗口,它有一个列表视图。我在一个单独的xml中创建了弹出窗口的设计,并在我的主页上点击一些按钮加载它。弹出窗口有一个列表视图,每一行都有一个图像和一个文本视图。我无法在Android4.1的列表视图中获得行选择,但它在5.0中工作。有人能建议我解决方案吗?列表视图:

<ListView android:id="@+id/lstSites"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fastScrollEnabled="true"
        android:layout_margin="5dp"
        android:descendantFocusability="blocksDescendants"></ListView>
</LinearLayout>

列表项:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants"
android:focusable="false"
android:focusableInTouchMode="false">
<ImageView
    android:id="@+id/thumbImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="10dp"
    android:focusable="false"
    android:focusableInTouchMode="false"/>
<TextView
    android:id="@+id/tvSite"
    android:textSize="20dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:text="Name"
    android:focusable="false"
    android:focusableInTouchMode="false"/>

添加行单击列表:

lstSiteMenu = (ListView) popupView.findViewById(R.id.lstSites);

            adapter = new MenuItemsAdapter(SiteActivity.this, arrMenu);
            // Attach the adapter to a ListView
            lstSiteMenu.setAdapter(adapter);
            lstSiteMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        final int position, long id) {
            }

共有3个答案

阎烨
2023-03-14

您需要从您的列表视图中删除android:genderantfocusability=“blocksDescendants”

同时从图像视图和文本视图中的行布局中删除android:focusableInTouchMode=“false”和android:focusableInTouchMode=“false”

列表项应该是可点击的,有禁用它获得焦点

甘祺
2023-03-14

从listview中删除此属性,android:genderantFocusability=“blocksDescendants”

android:focusable="false"
android:focusableInTouchMode="false"

从文本和图像视图。

试试这个例子,

String names[] ={"A","B","C","D"};
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
        LayoutInflater inflater = getLayoutInflater();
        View convertView = (View) inflater.inflate(R.layout.row_file, null);
        alertDialog.setView(convertView);
        alertDialog.setTitle("List");
        ListView lv = (ListView) convertView.findViewById(R.id.listView);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,names);
        lv.setAdapter(adapter);
        alertDialog.show();

否则你的代码就可以了。它起作用了。

有关更多详细信息,请浏览此链接。

另一个官方链接也是如此。

梁昊天
2023-03-14

尝试所有解决方案:

popupwindow.setFocusale(true);
listView xml : "android:focusable="true"

不要使用lstSiteMenu。setOnItemClickListener
而是转到适配器getView并添加

convertView.setOnClickListener

希望对你有帮助!

 类似资料:
  • 我开发了一个java gui,其中包含两个jTextField视图,用于显示源文件路径和目标文件路径。并且,用户选择了多个文件路径,我希望在JTextField附带的弹出窗口中显示以前的路径。这是几乎所有APP中的通用功能。有没有人知道这是怎么叫的,为了谷歌怎么做?

  • 我在列表视图中使用微调器,但它在列表视图中不能正常工作。我能够在微调器中显示所需的值,但无法从微调器中获取选定的项目值。 它没有打印任何东西。布局:

  • 我点击了一个链接,它打开了一个小窗口/popup/iframe,弹出窗口有XPath: 它没有window_id,但在firebug中,标识符将窗口显示为 ,所以我假设它是弹出窗口;如果我错了请纠正我。 详细html:是元素的xpath,而作为html则是,详细说明:` 匿名用户 试试这个:

  • 问题内容: 我正在尝试使用wunderground的api,Leaflet和Cloudmade将天气图标显示在地图标记中。我已经显示了文本和带有图标图像的变量,但是我不确定如何显示它。这是我的代码: 我尝试了一下但没有成功: 有什么建议? 问题答案: 标记的bindPopup方法仅将HTML内容作为字符串,因此您还需要在标记周围加上引号-类似于 应该为您工作。

  • 我正在使用Eclipse进行Android编程。不知何故(我可能不小心关闭了它),包资源管理器(通常在左边)已经不在那里了。我怎么让它回到原来的位置?我尝试了窗口>显示视图>包资源管理器,但它什么也没做。我还尝试了Window>Open Perspective>Java浏览,它打开了Package Explorer,但位置不对,还打开了一堆其他不想要的东西。我现在在Java透视图中。 如何使包资源

  • 我有一个窗口窗体,包含两个列表视图(例如,命名为a和b)和一个按钮。当两个列表视图之间有焦点时,按钮的功能应该是以不同的方式显示消息框。 所以按钮的代码是 然而,当我在“b”列表视图中选择该项时。它总是返回MessageBox。节目(b)。当我重新开始并在“a”列表视图中选择一个项目时,它会给我一个空引用异常。 代码有什么问题吗?