2014-11-14 4 views
0

У меня есть ListView, но я не могу поместить на него изображения. Ошибка в Activity_listView на holder.image.setImageDrawable(datos[position].getImage()); Как я могу поместить изображения в listView?

Сообщение об ошибке

The method setImageDrawable(Drawable) in the type ImageView is not applicable 
for the arguments (ImageView) 

Любая идея для решения этой проблемы?

активность (Activity_listView):

package com.simarro.asteroids; 
import android.support.v7.app.ActionBarActivity; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 

public class Activity_listView extends ActionBarActivity { 

    private ListView lstOpciones; 
    ImageView asteroid = (ImageView)findViewById(R.id.img_asteroid); 
    private puntuacion[] datos = new puntuacion[] { 
      new puntuacion(asteroid,"Pepito Dominguez", "15489"), 
      new puntuacion(asteroid,"Pedro Martínez", "16598"), 
      new puntuacion(asteroid,"Paco Perez", "16332"), 
      new puntuacion(asteroid,"Rosana Fernandez", "18792"), 
      new puntuacion(asteroid,"Paco Jones", "960") }; 

    class AdaptadorTitulares extends ArrayAdapter<puntuacion> { 

     Activity context; 

     AdaptadorTitulares(Activity context) { 
      super(context, R.layout.puntuacion, datos); 
      this.context = context; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      View item = convertView; 
      ViewHolder holder; 

      if (item == null) { 
       LayoutInflater inflater = context.getLayoutInflater(); 
       item = inflater.inflate(R.layout.puntuacion, null); 

       holder = new ViewHolder(); 
       holder.image=(ImageView)item.findViewById(R.id.img_asteroid); 
       holder.jugador = (TextView) item.findViewById(R.id.LblJugador); 
       holder.puntuacion = (TextView) item.findViewById(R.id.LblPuntuacion); 

       item.setTag(holder); 
      } else { 
       holder = (ViewHolder) item.getTag(); 
      } 

      holder.image.setImageDrawable(datos[position].getImage()); 
      holder.jugador.setText(datos[position].getJugador()); 
      holder.puntuacion.setText(datos[position].getPuntuacion()); 

      return (item); 
     } 
    } 

    static class ViewHolder { 
     ImageView image; 
     TextView jugador; 
     TextView puntuacion; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.list_view); 

     AdaptadorTitulares adaptador = new AdaptadorTitulares(this); 

     lstOpciones = (ListView) findViewById(R.id.LstOpciones); 

     //¡FUUUUUUUUU-SIÓN! 
     lstOpciones.setAdapter(adaptador); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_list_view, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

XML-контента для размещения с ListView (puntuacion.xml):

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:columnCount="3" 
    android:orientation="horizontal" > 

    <ImageView 
     android:id="@+id/img_asteroid" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/asteroid" /> 

    <TextView 
     android:id="@+id/LblJugador" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#ff0" 
     android:textSize="30px" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/LblPuntuacion" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="30px" 
     android:textStyle="normal" /> 

</GridLayout> 

Схема где находится ListView (listView.xml):

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

    <ListView android:id="@+id/LstOpciones" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

класс для значений получаем (Puntuacion)

package com.simarro.asteroids; 

import android.graphics.drawable.Drawable; 
import android.widget.ImageView; 

public class puntuacion 
{ 
    private ImageView image; 
    private String jugador; 
    private String puntuacion; 

    public puntuacion(ImageView img, String tit, String sub){ 
     image=img; 
     puntuacion = sub; 
     jugador = tit; 
    } 

    public ImageView getImage(){ 
     return image; 
    } 

    public String getJugador(){ 
     return jugador; 
    } 

    public String getPuntuacion(){ 
     return puntuacion; 
    } 
} 

ответ

2

Вместо возвращения ImageView в getImage(), вернуть Drawable и изменить его на

public Drawable getImage() { 
    return image.getDrawable(); 
} 

getDrawable() Docs

Как говорит ошибка, метод setImageDrawable() принимает Drawable тип, но вы передаете его в ImageView

+0

Затем, в случае puntuacion в Activity_listView, вместо этого астероида, какой тип формата я должен использовать? Строка, такая «drawable/asteroid» для доступа к изображению? –

+0

Я не совсем уверен, что понимаю ... – codeMagic

+0

В Activity_listView у меня есть экземпляр puntuacion. Первый параметр - фактически ImageView. При изменении первого параметра contructor в puntuacion.java формируйте ImageView to Drawable, экземпляр этой потребности в качестве первого параметра - типа Drawable. ImageView asteroid = (ImageView) findViewById (R.id.img_asteroid); частный puntuacion [] datos = new puntuacion [] { новый puntuacion (астероид, "Pepito Dominguez", "15489"), Идея позже, подставьте астероид к некоторым Drawable. Как будет Drawable? Извините, мой английский ужасен. –

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