Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为游标适配器应用自定义ListView_Android_Cursor - Fatal编程技术网

Android 为游标适配器应用自定义ListView

Android 为游标适配器应用自定义ListView,android,cursor,Android,Cursor,我正在构建一个自定义列表视图,用于将联系人光标中的联系人列表到一个列表中,该列表具有两个文本视图,用于显示联系人的电话号码和姓名,以及图像的位置。当我尝试为TextView设置Text时,我得到了一个空点错误,即使我检查了变量以查看它们是否包含字符串,但我不知道它有什么问题 public View getView(int position, View convertView, ViewGroup parent) { View rowView=convertView; ViewCache v

我正在构建一个自定义列表视图,用于将联系人光标中的联系人列表到一个列表中,该列表具有两个文本视图,用于显示联系人的电话号码和姓名,以及图像的位置。当我尝试为TextView设置Text时,我得到了一个空点错误,即使我检查了变量以查看它们是否包含字符串,但我不知道它有什么问题

 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);
    }

我发现您必须覆盖newview和bindview方法

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;

}

}

请包括堆栈跟踪