如何在ListView中从SQLite设置图像源

时间:2014-08-04 19:30:35

标签: android string sqlite listview imageview

我使用此代码填充了来自SQLite数据库的数据的Listview:

String[] from = new String[]{manager.CN_NAME, manager.CN_COLORFRUTO};
int[] to = new int[]{android.R.id.text1, android.R.id.text2};

效果很好。但我也想从数据库中设置图像源。

我在视频中看到它可以像这样完成

String[] from = new String[]{manager.CN_NAME, manager.CN_COLORFRUTO, manager.CN_IMAGE};
int[] to = new int[]{android.R.id.text1, android.R.id.text2, R.id.imageView2};

但是由于这样做,imageview没有显示任何内容(甚至没有在android中设置的默认@ drawable / image:src =" @ drawable / image")

我经常搜索并尝试了许多方法来做到这一点,但没有任何方法对我有用。 我已尝试使用setImageResource,但imageview位于布局" lista1"这段代码适用于另一种布局:setContentView(R.layout.activity_base);

这是活动的整个代码:

public class BaseActivity extends Activity implements View.OnClickListener {

private DataBaseManager manager;
Cursor cursor;

private EditText etBuscar;
private Cursor c;
private ListView lista;
private TextView tv;
private ImageButton bt;
private ImageView imageView;
private SimpleCursorAdapter adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.activity_base);

    manager = new DataBaseManager(this);
    lista = (ListView) findViewById(R.id.listView);
    tv = (TextView) findViewById(R.id.editText);
    bt = (ImageButton) findViewById(R.id.imageButton);
    bt.setOnClickListener(this);

    String[] from = new String[]{manager.CN_NAME, manager.CN_COLORFRUTO, manager.CN_IMAGE};
    int[] to = new int[]{android.R.id.text1, android.R.id.text2, R.id.imageView2};

    cursor = manager.cargarCursorFrutos();
    adapter = new SimpleCursorAdapter(this,R.layout.lista1,cursor,from,to,0);        
    lista.setAdapter(adapter);
    [...]

编辑: 这就是R.layout.lista1 XML的样子:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"
    android:contentDescription="Descripción del contenido de la imagen"
    android:src="@drawable/berries1"

    />



<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <TextView
        android:id="@android:id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@android:id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall" />


</LinearLayout>

这是R.layout.activity_base XML,它有一个搜索编辑文本和一个图像按钮,可以在列表视图中搜索:

<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:layout_width="275dp"
        android:layout_height="wrap_content"
        android:id="@+id/editText" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageButton"
        android:layout_weight="1"
        android:src="@android:drawable/ic_menu_search" />

</LinearLayout>

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_gravity="center_horizontal" />

EDIT2: 我发现了一些关于ViewBinder的东西。但我无法实施我见过的例子。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在适配器中:

   public class YourViewBinder  implements SimpleCursorAdapter.ViewBinder {
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {

            if(view.getId()==R.id.imageView2) {
                    ImageView iv = (ImageView) view;
                   iv.setImageResource(R.drawable.yourdrawable);
                    return true;
            }

            return false;
    }

在“活动”中为列表视图设置适配器

adapter.setViewBinder(new YourViewBinder());