Listview与每个项目的图像不同

时间:2012-08-24 12:54:43

标签: android listview simplecursoradapter listadapter

我的ListView

有问题

ListView项目xml有一个textarea和一个Imageview,对于从DB中取出的每个项目,我需要放置一个专用图像(基于_id)。

现在我有这个代码可以工作(但没有图像):

mio_db.openDataBase(); 
final Cursor data=mio_db.catalogo_prodotti();
final ListView listView1 = (ListView) findViewById(R.id.list_mia_2); 
String[] from = new String[] {"prodotto","_id"};
int[] to = new int[] {R.id.nome_prodotto_lista,R.id.freccia_prodotto_lista};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.mia_lista_2, data, from, to); 
listView1.setAdapter(adapter);

例如,如果我的_id为4,我需要在freccia_4

中添加R.id.freccia_prodotto_lista这样的图像

我不知道怎么做。我已经阅读了有关自定义适配器的内容,但我不了解如何实现它。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

使用游标

为列表视图创建CustomAdpter

<强>步骤1

Follow this tutorial

<强>第二步

而不是扩展Array Adapter扩展Cursor Adapter,它应该可以工作

class ListViewAdapter extends CursorAdapter {
LayoutInflater mInflater;
SimpleDateFormat sdf;

RequestLogAdapter(Context context, Cursor cursor) {
    super(context, cursor);
    mInflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

     //Get your details here
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
                //Create layout for image with text here
    return mInflater.inflate(R.layout.mulitcolumnlistview, parent, false);
}

@Override
public void bindView(View row, Context context, Cursor cursor) {
                //You can customise here

   }
 }

希望有所帮助

答案 1 :(得分:0)

我已经以另一种方式解决了,也许不是正确的解决方案,但它现在有效:

    setContentView(R.layout.prodotti);
    final Database_mio database_classe=new Database_mio(this); 
    database_classe.openDataBase(); 
    final Cursor data_mio=database_classe.catalogo_prodotti();
    ArrayList<Prodotto_per_lista> personList=new ArrayList<Prodotto_per_lista>();
    int prodotto=data_mio.getColumnIndex("prodotto");
    int id_immagine=data_mio.getColumnIndex("_id");
    while(data_mio.moveToNext()){
        switch(Integer.parseInt(data_mio.getString(id_immagine))){
            case 1:
                personList.add(new Prodotto_per_lista(R.drawable.freccia_1,data_mio.getString(prodotto)));
                break;
            case 18:
                personList.add(new Prodotto_per_lista(R.drawable.freccia_18,data_mio.getString(prodotto)));
                break;
            case 23:
                personList.add(new Prodotto_per_lista(R.drawable.freccia_23,data_mio.getString(prodotto)));
                break;
            case 28:
                personList.add(new Prodotto_per_lista(R.drawable.freccia_28,data_mio.getString(prodotto)));
                break;
            case 30:
                personList.add(new Prodotto_per_lista(R.drawable.freccia_30,data_mio.getString(prodotto)));
                break;
            case 35:
                personList.add(new Prodotto_per_lista(R.drawable.freccia_35,data_mio.getString(prodotto)));
                break;
            case 41:
                personList.add(new Prodotto_per_lista(R.drawable.freccia_41,data_mio.getString(prodotto)));
                break;
            case 48:
                personList.add(new Prodotto_per_lista(R.drawable.freccia_48,data_mio.getString(prodotto)));
                break;
            case 53:
                personList.add(new Prodotto_per_lista(R.drawable.freccia_53,data_mio.getString(prodotto)));
                break;
            case 57:
                personList.add(new Prodotto_per_lista(R.drawable.freccia_57,data_mio.getString(prodotto)));
                break;
        }
    }
    ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
    for(int i=0;i<personList.size();i++){
            Prodotto_per_lista p=personList.get(i);
            HashMap<String,Object> personMap=new HashMap<String, Object>();
            personMap.put("name", p.getName());
            personMap.put("image", p.getPhotoRes());
            data.add(personMap);
    }
    String[] from={"name","image"};
    int[] to={R.id.nome_prodotto_lista,R.id.freccia_prodotto_lista};
    SimpleAdapter adapter=new SimpleAdapter(
                    getApplicationContext(),
                    data,
                    R.layout.mia_lista_2,
                    from,
                    to);
    ((ListView)findViewById(R.id.list_mia_2)).setAdapter(adapter);

答案 2 :(得分:0)

现在唯一的问题是,项目的ID现在取自数组(data.add),而不是数据库中的_id。