2016-07-15 9 views
0

Ich habe versucht, Bitmaps aus meinem ziehbar Ordner anzuzeigen, die Größe ändern (Dieser Teil funktioniert gut) und sie in einem Listview setzen, aber wenn ich meinen Code nichts laufen scheint ...Listview-Bitmap

Hier es ist:

public class MainActivity extends AppCompatActivity { 
ImageView image; 
Bitmap[] data; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    image = (ImageView) findViewById(R.id.image); 
    ListView list=(ListView)findViewById(R.id.list); 
    data=new Bitmap[4]; 

    calculateInSampleSize size=new calculateInSampleSize(); 
    data[0]=(size.decodeSampledBitmapFromResource(getResources(),R.drawable.ic_image1,100,100)); 
    data[1]=(size.decodeSampledBitmapFromResource(getResources(),R.drawable.ic_image2,100,100)); 
    data[2]=(size.decodeSampledBitmapFromResource(getResources(),R.drawable.ic_image3,100,100)); 
    data[3]=(size.decodeSampledBitmapFromResource(getResources(),R.drawable.ic_image4,100,100)); 

    Adapter adapter=new Adapter(this,R.layout.pager_item,data); 
    list.setAdapter(adapter); 

Mein Adapter:

public class Adapter extends BaseAdapter{ 
Bitmap[] dataSource; 
LayoutInflater minflater; 
Activity parentActivity; 
int itemLayout; 


// constructor for adapter 
public Adapter (Activity activity, int layout, Bitmap[] ds){ 
    parentActivity = activity; 
    itemLayout = layout; 
    dataSource = ds; 
} 


@Override 
public int getCount() { 
    return 0; 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView view; 

    if(convertView!=null){ 
     view=(ImageView)convertView; 
    } 
    else{ 
     view=(ImageView)minflater.inflate(itemLayout,parent,false); 
     view.setImageBitmap(dataSource[position]); 

    } 


    return view; 
} 

natürlich habe ich ein Layout mit einem Listview in sie und ein weiteres mit einem Image (pager_item.XML)

Vielen Dank für Ihre Hilfe

+1

irgendwelche Ausnahmen? – Zoe

Antwort

2

Ihren Adapter ändern wie:

@Override 
public int getCount() { 
    return dataSource.length; 
} 

und

@Override 
public Bitmap getItem(int position) { 
    return dataSource[position]; 
} 
1

Das Problem ist, dass Sie 0 in

@Override 
public int getCount() { 
    return 0; 
} 

Sie zurückkehren sollten zurückgeben

dataSource.length; 

und in

@Override 
public Bitmap getItem(int position) { 
return null; 
} 

Sie

return dataSource[position]; 
0

zurückkehren sollte ich habe euch beide Antworten, aber meine Anwendung abstürzen würde, wenn ich es ins Leben gerufen.

Ich änderte ein paar Dinge:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view=null; 

    if(convertView!=null){ 
     view=convertView; 
    } 
    else{ 
     view= minflater.inflate(itemLayout, parent, false); 
     ImageView imageView=(ImageView)view.findViewById(R.id.image); 
     imageView.setImageBitmap(dataSource[position]); 

    } 


    return view; 
} 

und fügte ich in meinem Konstruktor:

minflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

Thank you!