2009-10-31 3 views
0

커스텀리스트 뷰를 구축하여 커스텀리스트 뷰를 구축하여 커스텀리스트 뷰를 구축하여 컨택 커서에서 전화 번호 및 연락처 이름뿐만 아니라 이미지의 위치에 대한 두 개의 텍스트 뷰 목록을 나열합니다. 내 TextView에 대한 setText하려고 할 때 널 포인트 오류가 나타납니다. 비록 변수를 검사하여 문자열이 들어 있는지 확인할 수는 없지만 아이디어가 없습니다. 난 당신이 newview와의 Bindview 방법커스텀 ListView 적용하기 CursorAdapter

public class RowAdapter extends CursorAdapter { 

private final LayoutInflater mInflater; 

public RowAdapter(Context context, Cursor c) { 
super(context, c); 
mInflater = LayoutInflater.from(context); 

} 

@Override 
public void bindView(View view, Context context, Cursor cursor) { 

ViewCache viewCache = null; 
View rowView = view; 
viewCache = (ViewCache) rowView.getTag(); 

ImageView imageView = (ImageView) view.findViewById(R.id.ContactIcon); 
int id = cursor.getColumnIndex(HelpiDB.KEY_ID); 
int namecolumn = cursor.getColumnIndex(HelpiDB.KEY_NAME); 
int numbercolumn = cursor.getColumnIndex(HelpiDB.KEY_NUMBER); 
Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, cursor.getLong(id)); 

Bitmap bitmap = People.loadContactPhoto(context, uri, R.drawable.icon, null); 

String name = cursor.getString(namecolumn); 
String number = cursor.getString(numbercolumn); 

imageView.setImageBitmap(bitmap); 

TextView nameTextView = viewCache.getName(); 
nameTextView.setText(name); 

TextView numberTextView = viewCache.getNumber(); 
numberTextView.setText(number); 
ImageView icon = (ImageView) view.findViewById(android.R.id.icon); 
boolean crossed = Boolean.valueOf(cursor.getString(HelpiDB.CHECK_COLUMN)); 

if (crossed) { 
    icon.setImageState(new int[] { android.R.attr.state_checked }, true); 

} else { 
    icon.setImageState(new int[] {}, true); 

} 

} 

@Override 
public View newView(Context context, Cursor cursor, ViewGroup parent) { 

final View view = mInflater.inflate(R.layout.row, parent, false); 
ViewCache viewCache = new ViewCache(view); 
view.setTag(viewCache); 
bindView(view, context, cursor); 
return view; 

} 

}을 (를) 덮어 쓰기해야 알아낼

public View getView(int position, View convertView, ViewGroup parent) { 
View rowView=convertView; 
ViewCache viewCache=null; 

if (rowView==null) { 
    LayoutInflater inflater=(LayoutInflater)_context.getSystemService(
     Context.LAYOUT_INFLATER_SERVICE); 

    rowView=inflater.inflate(R.layout.row, null); 
    viewCache = new ViewCache(rowView); 
    rowView.setTag(viewCache); 
} 
else { 
    viewCache=(ViewCache)rowView.getTag(); 
} 
_cursor.moveToPosition(position); 
int id = _cursor.getColumnIndex(People._ID); 
int numbercolumn = _cursor.getColumnIndex(People.NUMBER); 
int namecolumn = _cursor.getColumnIndex(People.NAME); 
String tag = "tag"; 
Log.i(tag, getItem(position).toString()); 

String name; 
String number; 
number = _cursor.getString(numbercolumn); 

name = _cursor.getString(namecolumn); 

Log.i("test6386", number); 
Log.i("Test456", name); 

TextView nameView = viewCache.getName(); 
TextView numberView = viewCache.getNumber(); 
nameView.setText(name); 
numberView.setText(number); 

Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, _cursor.getLong(id)); 
Bitmap bitmap = People.loadContactPhoto(_context, uri, R.drawable.icon, null); 


viewCache.getIcon().setImageBitmap(bitmap); 

return(rowView); 
    } 
+0

는 스택 트레이스를 기입하십시오 – I82Much

답변