setOnItemClickListener在片段中的ListView上不起作用

问题描述 投票:-2回答:2

当我单击片段1选项卡中的列表视图时,将无法进入下一个活动。我已经在类中设置了setOnItemClickListener,但仍然无法正常工作。现在我的问题是,当我单击列表视图时,它将不起作用。

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>

LoadReport类

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();
}
java android android-listview
2个回答
0
投票

公共类CustomList_StatusReport扩展了SimpleAdapter {

private Context mContext;
public LayoutInflater inflater = null;
public CustomList_StatusReport(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
    super(context, data, resource, from, to);
    mContext = context;
    inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    try {
        if (convertView == null)
            vi = inflater.inflate(R.layout.activity_custom_list__status_report, null);
        HashMap<String, Object> data = (HashMap<String, Object>) getItem(position);
        TextView reportID = vi.findViewById(R.id.tvReport_ID);
        TextView cName = vi.findViewById(R.id.tvCompliantName);
        TextView cIC = vi.findViewById(R.id.tvCompliantIC);
        TextView cPhone =  vi.findViewById(R.id.tvCompliantPhone);

        String id = (String) data.get("reportID");
        String name = (String)data.get("fullName");
        String ic = (String)data.get("icNum");
        String phone = (String)data.get("phoneNum");

        reportID.setText(id);
        cName.setText(name);
        cIC.setText(ic);
        cPhone.setText(phone);
    }catch (IndexOutOfBoundsException e){}
    return vi;
}

0
投票

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

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

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

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