2013-11-22 4 views
0

Im сбор в image из gallery и сохранения его путь в sqlite DB, все работают хорошо, но image не установлен в ImageView. MyAdapter.java класс:изображение не установлено в пользовательском списке

public class MyAdapter extends CursorAdapter { 

protected Activity activity = null; 


public MyAdapter(Activity activity, Cursor cursor) { 
    super(activity, cursor, false);  
    this.activity = activity; 
} 

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

    MyHolder holder = (MyrHolder) row.getTag(); 
    holder.populateFrom(cursor); 
} 

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

    LayoutInflater inflater = activity.getLayoutInflater(); 

    View row = inflater.inflate(R.layout.row, root, false); 
    MyHolder holder = new MyHolder(activity, row); 
    row.setTag(holder); 

    return (row); 
} 

}

MyHolder.java класс:

public class MyHolder { 

protected Activity activity = null; 
protected TextView name, phone, dateOfJoining; 
protected ImageView imageView = null; 

    public MyHolder(Activity activity, View row) { 

    this.activity = activity; 
    name = (TextView) row.findViewById(R.id.name); 
    phone = (TextView) row.findViewById(R.id.phone); 
    dateOfJoining = (TextView) row.findViewById(R.id.joinDate); 
    imageView = (ImageView) row.findViewById(R.id.imageView); 
} 

    public void populateFrom(Cursor cursor) { 

     name.setText(cursor.getString(0)); 
     phone.setText("Cell : " + cursor.getString(1)); 
     dateOfJoining.setText(cursor.getString(2));   
     imageView.setImageBitmap(getImageBitmap(cursor)); 


} 

protected Bitmap getImageBitmap(Cursor cursor) { 

    Bitmap bitmap = null; 
    try { 
     bitmap = BitmapFactory.decodeFile(cursor.getString(3)); 
    } catch (Exception e) { 

     bitmap =BitmapFactory.decodeResource(activity.getResources(), R.drawable.person); 
    } 
    Log.e("IAMGE", "Path is = " + cursor.getString(3)); 
    return bitmap; 
}} 

но изображение не установлено в imageViewimageView.setImageBitmap(getImageBitmap(cursor)); на линии. , пожалуйста, сообщите, как установить эту проблему.

ответ

1

Там может быть еще несколько вариантов, но я думаю, что вы л.д. дать правильный индекс столбца в строке

bitmap = BitmapFactory.decodeFile(cursor.getString(3)); 

это может быть полезным для вас ...

+0

Увы! там, вы, меняя «bitmap = BitmapFactory.decodeFile (cursor.getString (3));' to 'bitmap = BitmapFactory.decodeFile (cursor.getString (4));' Im получение правильных результатов спасибо за сложную помощь ... –

0

В приведенном коде вы создаете экземпляр MemberHolder в newView, и вы вставили код для MyHolder, поэтому я предполагаю, что MemberHolder и MyHolder такие же, и это некоторая опечатка. ..

Вы создаете экземпляр Holder-членов, которые должны быть в идеале MyHolder .....

MemberHolder holder = new MemberHolder(activity, row); 

метод populateFrom владельца является метод, который заполнит вид, но это не кажется, быть вызванным из любого, где, вероятно, это причина того, что View не заполняется, а ImageVie w также пуст.

+0

ОК Я установил, что и есть путь '=/шоссе/SDCard/DCIM/ic_launcher.png', но все еще 'Image' не установлен. –

0

попробовать это ...

удалить

holder.populateFrom(cursor); 

от

bindView(View row, Context context, Cursor cursor) 

метод и держать его в NewView метод (...) как

@Override 
public View newView(Context context, Cursor cursor, ViewGroup root) { 
    LayoutInflater inflater = activity.getLayoutInflater(); 
    View row = inflater.inflate(R.layout.row, root, false); 
    MyHolder holder = new MyHolder(activity, row); 
    row.setTag(holder); 
    holder.populateFrom(cursor); 
    return (row); 
} 
+0

Я пробовал это, вместо того, чтобы решать эту проблему, он создает и другую, то есть, если я добавляю новую запись, первая повторяется, а новая не заполняется ... –

Смежные вопросы