gpt4 book ai didi

java - Android FrameLayout ListView 元素看起来不可点击

转载 作者:行者123 更新时间:2023-12-02 03:10:26 25 4
gpt4 key购买 nike

我有一个应用程序,可将项目加载到 FrameLayout 内的 ListView 中。该部分工作正常,但点击功能似乎不起作用,当我将鼠标悬停在项目上时,它们没有可点击的悬停外观,并且单击时不执行任何操作。

我在 Google 上搜索了一下,在 xml 中提到了一些焦点和可点击类型,但尝试添加这些类型后,它们似乎没有任何区别。

我使用的布局结构有问题吗?或者我可以添加一些内容来确保 ListView 元素可点击吗?

LansFragment

Map<String,String> myMap = new HashMap<>();
JSONArray lanArray = data; //json arrray, blank for example

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.activity_main, container, false);

ArrayList<String> itemArray = new ArrayList<String>();

try {
JSONArray jsonMainArr = jsonObj.getJSONArray(lanArray);

for (int i = 0; i < jsonMainArr.length(); i++) {

JSONObject json_data = jsonMainArr.getJSONObject(i);

String name = json_data.getString("lanName");
String key = json_data.getString("lanKey");

itemArray.add(name);
myMap.put(name, key);
}
} catch (Exception e) {
// catch here
}

ArrayAdapter adapter = new ArrayAdapter<String>(view.getContext(), R.layout.activity_listview, itemArray);

ListView listView = (ListView) getActivity().findViewById(R.id.listview);
listView.setAdapter(adapter);

listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> l, View v, int position, long id) {

String lan = l.getItemAtPosition(position).toString();
String key = myMap.get(lan);

// Not currently working due to no click registering
}
});

return view;
}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="app.stats.LansFragment"
android:orientation="horizontal">

<FrameLayout
android:id="@+id/fragment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listview" />
</FrameLayout>

</LinearLayout>

activity_listview

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip"
android:textSize="16dip"
android:textStyle="bold" >
</TextView>

最佳答案

您对 fragment 调用中的 ListView id 的调用:

ListView listView = (ListView) getActivity().findViewById(R.id.listview);

但是在 fragment 内部,您应该引用 fragment View 。应该是:

ListView listView = (ListView) view.findViewById(R.id.listview);

关于java - Android FrameLayout ListView 元素看起来不可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41131445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com