Android 数据未在ListView中填充
我正在一个屏幕上工作,我想在其中显示来自SQlite表的数据。 在调试时,我可以看到的是,数据进入了适配器,但在listview.setAdapteradapter中没有填充。我正在使用自定义适配器、自定义列表项 任何错误也不会出现 请帮忙。我在下面发布我的代码 放置列表项: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
<?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">