Android 数据未在ListView中填充

Android 数据未在ListView中填充,android,listview,adapter,Android,Listview,Adapter,我正在一个屏幕上工作,我想在其中显示来自SQlite表的数据。 在调试时,我可以看到的是,数据进入了适配器,但在listview.setAdapteradapter中没有填充。我正在使用自定义适配器、自定义列表项 任何错误也不会出现 请帮忙。我在下面发布我的代码 放置列表项: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res

我正在一个屏幕上工作,我想在其中显示来自SQlite表的数据。 在调试时,我可以看到的是,数据进入了适配器,但在listview.setAdapteradapter中没有填充。我正在使用自定义适配器、自定义列表项

任何错误也不会出现

请帮忙。我在下面发布我的代码

放置列表项:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:weightSum="1.0">


    <TextView
        android:id="@+id/serial_number_textview_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.2"
        android:padding="5dp"
        android:text="1"
        android:textColor="@color/common_signin_btn_default_background"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/duration_textview_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.4"
        android:padding="5dp"
        android:text="hello"
        android:textColor="@color/common_signin_btn_default_background"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/distance_textview_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.4"
        android:padding="5dp"
        android:text="hello"
        android:textColor="@color/common_signin_btn_default_background"
        android:textSize="16sp" />


</LinearLayout>
片段:

public class TripHistoryFragment extends Fragment {
    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
//    private static final String ARG_PARAM1 = "param1";
//    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;
    private MyDbHelper helper;
    private ListView listView;
    private TextView serialNumberTitle, timeTitle, distanceCoveredTitle;
    private TextView headerTextView;
    private List<ListData> dataList;
    private TripHistoryDataAdapter adapter;
    private Typeface typeface;
    private GetDataTask getDataTaskObj;
    // private OnFragmentInteractionListener mListener;


    public TripHistoryFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.trip_history_screen, container, false);
        typeface = Typeface.createFromAsset(getActivity().getAssets(),
                "fonts/AvantGarde.ttf");
        listView = (ListView) rootView.findViewById(R.id.trip_history_listview_id);
        serialNumberTitle = (TextView) rootView.findViewById(R.id.serial_number_title_textview_id);
        timeTitle = (TextView) rootView.findViewById(R.id.duration_title_textview_id);
        distanceCoveredTitle = (TextView) rootView.findViewById(R.id.distance_title_textview_id);
        headerTextView = (TextView) rootView.findViewById(R.id.header_label_id);
        adapter = new TripHistoryDataAdapter(getActivity(), R.layout.place_list_item);
        serialNumberTitle.setTypeface(typeface);
        timeTitle.setTypeface(typeface);
        distanceCoveredTitle.setTypeface(typeface);
        headerTextView.setTypeface(typeface);
        getDataTaskObj = new GetDataTask(getActivity());
     //   listView.setAdapter(adapter);
        if (android.os.Build.VERSION.SDK_INT >= 11) {
            // allows task to run parallely
            getDataTaskObj.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
                    (Void[]) null);
        } else {
            getDataTaskObj.execute();
        }
        return rootView;
    }


    public class GetDataTask extends AsyncTask<Void, Void, Void> {
        Context context;
        Dialog dialog;

        // ProgressDialog progressDialog;

        public GetDataTask(Context context) {
            this.context = context;

            dialog = Utils.showValidationDialog(context, "Loading ...",
                    "Please wait ", false);

           // listDataArr = new ArrayList<ListData>();
        }


        @Override
        protected Void doInBackground(Void... params) {
            helper = new MyDbHelper(getActivity());

            Cursor cursor = helper.getAllLocationSavedCursor();
            //String myHexColor = "#CC2233";
            if (cursor.moveToFirst()) {
                do {

                    String number = cursor.getString(cursor.getColumnIndex("id"));
                    String duration = cursor.getString(cursor.getColumnIndex("UnixTimeStamp"));
                    String distance = cursor.getString(cursor.getColumnIndex("distance"));

                    adapter.add(new ListData(number, duration, distance));


                    //list.add(map);


                } while (cursor.moveToNext());
                cursor.close();
            }


            return null;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            if (adapter != null && !adapter.isEmpty()) {
                listView.setAdapter(adapter);
                Toast.makeText(getActivity(), "Running trip data is here", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getActivity(), "No History Found!!", Toast.LENGTH_SHORT).show();
            }
            super.onPostExecute(aVoid);
        }
    }
}

如果有人发现了什么或者需要更多信息,请告诉我。

更改trip\u history\u Screen.xml的线性布局。用这个

 <LinearLayout
>         android:id="@+id/titles_layout"
>         android:layout_width="match_parent"
>         android:layout_height="wrap_content"
>         android:layout_below="@+id/heading_layout"
>         android:orientation="horizontal"
>         android:weightSum="1.0">
与此相反:

 <LinearLayout
        android:id="@+id/titles_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/heading_layout"
        android:orientation="horizontal"
        android:weightSum="1.0">

是否在onPostExecute方法中尝试了adapter.notifyDataSetChanged?首先将完整数据存储到arraylist,然后通过构造函数将列表传递给适配器类。因此,在onPostExecute方法中初始化适配器类。在适配器类中进行适当的更改。不,不,不要使用任何ArrayAdapter,您的数据模型基于sqlite db,因此请改用SimpleCursorAdapter。我尝试过这种方法首先将完整数据存储到arraylist,然后通过构造函数将列表传递给适配器类。因此,在onPostExecute方法中初始化适配器类。在适配器类中也进行适当的更改。但是数据没有显示在屏幕上。我在onPostExecute方法中也尝试了adapter.notifyDataSetChanged。。但似乎什么都不起作用
 <LinearLayout
>         android:id="@+id/titles_layout"
>         android:layout_width="match_parent"
>         android:layout_height="wrap_content"
>         android:layout_below="@+id/heading_layout"
>         android:orientation="horizontal"
>         android:weightSum="1.0">
 <LinearLayout
        android:id="@+id/titles_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/heading_layout"
        android:orientation="horizontal"
        android:weightSum="1.0">