mit Hilfe der grid-Ansicht und Bild-Ansicht, um die Anzeige von einigen Bildern
erstelle ich ein einfaches android-Anwendung, die die Anzeige mehrerer Bilder und auf der ausgewählten das system zeigt im Bild anzeigen .. aber das problem ist, dass das system die Anzeige der id der Bilder als auf das auswählen bestimmter Bild-das system zeigt das Bild im Bild anzeigen .
kann mir jemand helfen um dieses problem zu beheben ??
log cat
12-03 08:57:16.493: E/AndroidRuntime(3126): Caused by: java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.widget.TextView
12-03 08:57:16.493: E/AndroidRuntime(3126): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:379)
GridActivity.java
package com.devleb.listviewdemo;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
public class GridActivity extends Activity implements
AdapterView.OnItemClickListener {
private ImageView Selection;
private static final Integer[] items = { R.drawable.image1,
R.drawable.image2, R.drawable.image3, R.drawable.image4,
R.drawable.image5, R.drawable.image6, R.drawable.image4,
R.drawable.image2 };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid);
Selection = (ImageView) findViewById(R.id.selection);
GridView grid = (GridView) findViewById(R.id.grid);
grid.setAdapter(new ArrayAdapter<Integer>(this, R.layout.cell, items));
grid.setOnItemClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.grid, menu);
return true;
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
//TODO Auto-generated method stub
Selection.setImageResource(items[arg2]);
}
}
activity_grid.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".GridActivity" >
<ImageView
android:id="@+id/selection"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<GridView
android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="100dip"
android:gravity="center"
android:horizontalSpacing="5dip"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="40dip" >
</GridView>
</LinearLayout>
cell.xml
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imgv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
</ImageView>
- Versuchen Sie, reinigen Sie das Projekt und überprüfen Sie dann.
- Gehen Sie zu Projekt-sauber , es immer Arbeit für mich in solchen Situationen
- GrIsHu, ich versuche es und immer noch der gleiche Fehler
- Shashank Agarwal ich es probiert habe, und immer noch der gleiche Fehler
- Sie senden integer-array der adapter nicht die drawable' so erstellen Sie Ihre eigenen adapter...um die Bilder in der grid-Ansicht
- Schauen Sie sich meine Antwort.
- Ändern Sie Ihre cell.xml layout-Datei
ImageView
zuTextView
und dann check-out.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich modifiziert Ihren code, indem Sie einen benutzerdefinierten adapter, jetzt ist es gut funktioniert, beachten Sie bitte es.
Die ArrayAdapter erfordert die Ressource-ID, um eine TextView XML Ausnahme bedeutet, dass Sie nicht liefern, was der
ArrayAdapter
erwartet.Wenn Sie diesen Konstruktor:
R.Layout.cell
muss die id der xml-layout-Datei enthält nur eineTextView
(dieTextView
nicht gewickelt werden, durch ein anderes layout, wie einLinearLayout
,RelativeLayout
,ImageView
etc!!!), so etwas wie dieses:Wenn Sie möchten, dass Ihre Liste Zeile im layout zu sein, etwas ein wenig anders dann eine einfache
TextView
widget-verwenden Sie diesen Konstruktor:denen, die Sie liefern, die
id
von einem layout, das enthalten kann, die verschiedenen Ansichten, aber auch muss enthaltenTextView
mit undid
(der Dritte parameter), die Sie passieren, um IhreArrayAdapter
so kann es wissen, wo dieStrings
in der Zeile layout.