2017-03-01 1 views
-1

나는 카우치베이스 주식회사 라이트 database.My 문제에서 응용 프로그램을 i의 데이터가 image.The ArrayAdapter와 코드를 아래와 같이보고있는 ArrayAdapter와에서 목록보기로 데이터를 데이터베이스 라이트 카우치베이스 주식회사에서 데이터를 쿼리하고 설정하면됩니다 개발하고UsersAdapter를 사용하여 데이터를 목록보기로 설정하는 방법은 무엇입니까?

CouchDb couchDb = new CouchDb(getApplicationContext()); 
    ArrayList<ContactData> data = couchDb.getData(); 
    ArrayAdapter adapter = new ArrayAdapter(this,R.layout.list_simple,R.id.textname,data); 
    list.setAdapter(adapter); 

enter image description here

이 선 발생이 상기 어댑터 널 포인터 예외 맞춤 UsersAdapter 클래스

public class UsersAdapter extends ArrayAdapter<ContactData>{ 

    public UsersAdapter(MainActivity mainActivity, ArrayList<ContactData> data) { 
     super(mainActivity,R.layout.list_simple,data); 
    } 

    public class ViewHolder { 
     TextView name; 
    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     ContactData contactData = getItem(position); 
     ViewHolder viewHolder; 

     if(convertView == null) 
     { 
      viewHolder = new ViewHolder(); 
      LayoutInflater inflater = LayoutInflater.from(getContext()); 
      convertView = inflater.inflate(R.layout.list_simple, parent, false); 
      viewHolder.name = (TextView) convertView.findViewById(R.id.textname); 
     } 
     else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 
     viewHolder.name.setText(contactData.getNames()); 

     return convertView; 
    } 
} 

만들어 사용 극복 viewHolder.name.setText (contactData.getNames());

이는 연락처 데이터 자바 클래스

public class ContactData { 

String names; 

public ContactData(String names) { 
    this.names = names; 
} 

public ContactData() 
{ 

} 

public String getNames() { 
    return names; 
} 

public void setNames(String names) { 
    this.names = names; 
} 

}

이 문제를 해결하고 또한 값이 UsersAdapter에서 null을 반환하는 이유를 확인하는 방법 좀 도와주세요에게 있습니다. 예외가 발생

당신은 UsersAdapter을 만든하지만 당신은 어디를 사용하지 않을

E/AndroidRuntime: FATAL EXCEPTION: main                   Process: com.seyali.couchbasedatabase2, PID: 5641                   java.lang.NullPointerException: Attempt to read from field 'android.widget.TextView com.seyali.couchbasedatabase2.MainActivity$UsersAdapter$ViewHolder.name' on a null object reference 
                      at com.seyali.couchbasedatabase2.MainActivity$UsersAdapter.getView(MainActivity.java:107) 
                      at android.widget.AbsListView.obtainView(AbsListView.java:2363) 
+0

'list_simple' 레이아웃은 텍스트 뷰 ID로'textname'이 포함되어 있습니까? – Piyush

+0

예 id가 포함 된 textview가 포함되어 있습니다. –

+0

이 ArrayList의 크기는 무엇입니까 data = couchDb.getData() ;? – Piyush

답변

2

입니다. 사용자가 다음과 같이 표시합니다.

CouchDb couchDb = new CouchDb(getApplicationContext()); 
ArrayList<ContactData> data = couchDb.getData(); 
UsersAdapter adapter = new UsersAdapter(this, data); 
list.setAdapter(adapter); 

NullPointerException은 항목이 null이기 때문에 발생합니다. 이 작업을 수행하려고 :

private ArrayList<ContactData> data; 

public UsersAdapter(MainActivity mainActivity, ArrayList<ContactData> data) { 
    super(mainActivity,R.layout.list_simple,data); 
    this.data = data; 
} 

와 다음의 getView 메서드에서 같은 :

ContactData contactData = data.get(position); 

는 희망이 도움이!

+0

아무런 문제가 해결되지 않은 경우에도 예외가 발생합니다 –

+0

예외 게시 –

0

사용이 :

private ArrayList<ContactData> data; 
private Context context; 

public UsersAdapter(Context contect, ArrayList<ContactData> data) { 
this.context=context; 
this.data = data; 
} 


@NonNull 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ContactData contactData = data.get(position); 
    ViewHolder viewHolder; 

    if(convertView == null) 
    { 
     viewHolder = new ViewHolder(); 
     LayoutInflater inflater = LayoutInflater.from(context); 
     convertView = inflater.inflate(R.layout.list_simple, parent, false); 
     viewHolder.name = (TextView) convertView.findViewById(R.id.textname); 
    } 
    else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 
    viewHolder.name.setText(contactData.getNames()); 

    return convertView; 
} 
+0

여전히 예외 발생자 –

+0

여기에 예외를 붙여 넣으십시오. –

+0

당신은 getCount() 메소드를 오버라이드 했습니까 ?? –