ListFragment에 내 데이터베이스의 데이터를 표시하려고합니다. 그러나ListFragment의 ListView에서 자체 ListAdapter를 사용할 때 NullPointerException이 throw됩니다.
package com.mysys.asistan;
import android.app.ListFragment;
import android.content.Context;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.mysys.asistan.database.Company;
public class CompanyListFragment extends ListFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new CompanyListAdapter(getActivity()));
}
private class CompanyListAdapter implements ListAdapter {
private final Context context;
private DatabaseHelper dbHelper;
public CompanyListAdapter(Context context) {
this.context = context;
this.dbHelper = new DatabaseHelper(context);
}
public int getCount() {
return dbHelper.getCompanyCount();
}
public Object getItem(int position) {
return dbHelper.getAllCompanies().get(position);
}
public long getItemId(int position) {
return (long) dbHelper.getAllCompanies().get(position).id;
}
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.company_list_item, parent, false);
Company company = (Company) getItem(position);
TextView nameView = (TextView) row.findViewById(R.id.CompanyListName);
TextView telephoneView = (TextView) row.findViewById(R.id.CompanyListTelephone);
TextView addressView = (TextView) row.findViewById(R.id.CompanyListAddress);
nameView.setText(company.name);
telephoneView.setText(company.telephone);
addressView.setText(company.address);
return null;
}
public int getItemViewType(int position) {
return IGNORE_ITEM_VIEW_TYPE;
}
public int getViewTypeCount() {
return 1;
}
public boolean hasStableIds() {
return true;
}
public boolean isEmpty() {
return getCount() == 0 ? true : false;
}
public void registerDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
public void unregisterDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
public boolean areAllItemsEnabled() {
return true;
}
public boolean isEnabled(int position) {
return true;
}
}
}
: 나는 ListActivity를 사용하는 경우이 작업을 수행하려면, 내가 같은 방법을 따라 한 내 자신의 어댑터 (어댑터가 내 오래된 프로젝트 중 하나에 BaseAdapter를 확장하는 클래스에서 변환, 이상하게 보일 수도 있습니다) 생성 즉 NullPointerException이 _ 내가 로그 캣의 로그에서 아무것도 알 수없는, 아무것도 내 코드 관련이 없습니다 :
01-24 20:24:06.040: E/AndroidRuntime(8731): FATAL EXCEPTION: main
01-24 20:24:06.040: E/AndroidRuntime(8731): java.lang.NullPointerException
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.ListView.measureScrapChild(ListView.java:1181)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.ListView.measureHeightOfChildren(ListView.java:1264)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.ListView.onMeasure(ListView.java:1173)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.View.measure(View.java:10848)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4353)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.FrameLayout.onMeasure(FrameLayout.java:267)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.View.measure(View.java:10848)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4353)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.FrameLayout.onMeasure(FrameLayout.java:267)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.View.measure(View.java:10848)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4353)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1284)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:956)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.LinearLayout.onMeasure(LinearLayout.java:521)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.View.measure(View.java:10848)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4353)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.FrameLayout.onMeasure(FrameLayout.java:267)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.View.measure(View.java:10848)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.LinearLayout.measureVertical(LinearLayout.java:764)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.LinearLayout.onMeasure(LinearLayout.java:519)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.View.measure(View.java:10848)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4353)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.widget.FrameLayout.onMeasure(FrameLayout.java:267)
01-24 20:24:06.040: E/AndroidRuntime(8731): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2042)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.View.measure(View.java:10848)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.ViewRoot.performTraversals(ViewRoot.java:941)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.view.ViewRoot.handleMessage(ViewRoot.java:2063)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.os.Handler.dispatchMessage(Handler.java:99)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.os.Looper.loop(Looper.java:132)
01-24 20:24:06.040: E/AndroidRuntime(8731): at android.app.ActivityThread.main(ActivityThread.java:4126)
01-24 20:24:06.040: E/AndroidRuntime(8731): at java.lang.reflect.Method.invokeNative(Native Method)
01-24 20:24:06.040: E/AndroidRuntime(8731): at java.lang.reflect.Method.invoke(Method.java:491)
01-24 20:24:06.040: E/AndroidRuntime(8731): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
01-24 20:24:06.040: E/AndroidRuntime(8731): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
01-24 20:24:06.040: E/AndroidRuntime(8731): at dalvik.system.NativeStart.main(Native Method)
그리고 이것은 조각이 들어있는 레이아웃입니다 :
<?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" >
<fragment
android:id="@+id/fragment1"
android:name="com.mysys.asistan.CompanyListFragment"
android:layout_width="@dimen/company_listfragment_width"
android:layout_height="wrap_content" />
</LinearLayout>
을3210
그리고이 company_list_item.xml입니다 :
<?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="vertical" >
<TextView android:id="@+id/CompanyListName"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@+id/CompanyListAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@+id/CompanyListTelephone"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
나는 this 질문을 찾았지만 해결책은 내가 생각하는 내 문제와 관련이있는 것이 아닙니다. 귀하의 도움에 미리 감사드립니다.
아, 내 오래된 프로젝트의 코드를 복사하여 붙여 넣기 때문에 놓친 것 같습니다. 이 질문은 그대로 있거나 삭제해야합니까? 재활용 된 견해와 소지자에 대한 팁에 감사드립니다. – Utku
예. 이 질문을 삭제하십시오. 이 게시물은 이제 아무런 목적도 없습니다. :) – manjusg
머무르게하십시오. 첫 번째로 "measureScrapChild nullpointerexception"이며 잘못된 반환 된 아이 때문임을 보여줍니다. –