首页 > 解决方案 > setOnItemClickListener 在片段中的 ListView 上不起作用

问题描述

当我单击选项卡 Fragment 1 中的列表视图时,它将无法跳到下一个活动。我已经在课堂上设置了OnItemClickListener,但仍然无法正常工作。现在我的问题是当我单击列表视图时它不起作用。

public class TabFragment1_Staff extends Fragment {
    ListView lsReport;
    ArrayList<HashMap<String, String>> reportlist;
    public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        return inflater.inflate(R.layout.activity_tab_fragment1__staff, container, false);
    }
    @Override
    public void onActivityCreated(Bundle savedInstanceState){
        super.onActivityCreated(savedInstanceState);
        reportlist = new ArrayList<>();
        lsReport = getActivity().findViewById(R.id.listReport);
        loadReport();
        lsReport.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(getActivity(),AddStatusDialogWindow.class);
                Bundle bundle = new Bundle();
                Log.e("HANIS",reportlist.get(position).get("reportID"));
                bundle.putString("reportID",reportlist.get(position).get("reportID"));
                bundle.putString("fullName",reportlist.get(position).get("fullName"));
                bundle.putString("icNum",reportlist.get(position).get("icNum"));
                bundle.putString("phoneNum",reportlist.get(position).get("phoneNum"));
                bundle.putString("Rdate",reportlist.get(position).get("Rdate"));
                bundle.putString("Rtime",reportlist.get(position).get("Rtime"));
                bundle.putString("timeName",reportlist.get(position).get("timeName"));
                bundle.putString("typeVehicle",reportlist.get(position).get("typeVehicle"));
                bundle.putString("registrationnum",reportlist.get(position).get("registrationnum"));
                bundle.putString("location",reportlist.get(position).get("location"));
                bundle.putString("brief",reportlist.get(position).get("brief"));
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });
    }
}

tabFragment1.xml

<ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <ListView
                android:id="@+id/listReport"
                android:layout_width="match_parent"
                android:layout_height="300dp"
                android:clickable="false"
                android:focusable="false"
                android:focusableInTouchMode="false"/>

        </LinearLayout>
    </ScrollView>

加载报告类

class LoadReport extends AsyncTask<Void, Void, String> {
        @Override
        protected String doInBackground(Void... params) {
            // Perform api call
        }
        @Override
        protected void onPostExecute(String s) {
            reportlist.clear();
                // Parse api response and fill in reportlist var

                ListAdapter adapter = new CustomList_StatusReport(
                        getActivity(), reportlist,
                        R.layout.activity_custom_list__status_report, new String[]
                        {"reportID","fullName","icNum","phoneNum"}, new int[]
                        {R.id.tvReport_ID,R.id.tvCompliantName,R.id.tvCompliantIC,R.id.tvCompliantPhone});
                lsReport.setAdapter(adapter);
              Toast.LENGTH_SHORT).show();
            }
        }
    LoadReport loadReport = new LoadReport();
    loadReport.execute();
}

标签: javaandroidandroid-listview

解决方案


在 tabFragment1.xml 中,为什么要使用以下行代码?

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

如果不需要,请删除这些并让我们知道是否存在此问题?


推荐阅读