我使用此代码填充了来自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的东西。但我无法实施我见过的例子。任何帮助将不胜感激。
答案 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());