Comment créer Spinner-liste à l'aide de CustomAdapter dans android
dans mon application,je veux créer SpinnerList à l'aide de CustomAdapter classe,Pour ce que j'ai écrit ci-dessous le code mais quand je tape sur spinner liste de tableau Liste les images ne s'affichent pas dans spinner-liste comme mon écran ci-dessous pourquoi ce problème est à venir?
main_layout.xml:-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="Category:"
android:layout_marginBottom="5dp"/>
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
MainActivity:-
public class MainActivity extends AppCompatActivity {
public static final String[] titles = new String[] { "Strawberry",
"Banana", "Orange", "Hello" };
public static final Integer[] images = { R.drawable.image1,
R.drawable.image2, R.drawable.image3, R.drawable.image4 };
Spinner spinner;
List<RowItem> rowItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
rowItems = new ArrayList<RowItem>();
for (int i = 0; i < titles.length; i++) {
RowItem item = new RowItem(titles[i],images[i]);
rowItems.add(item);
}
spinner = (Spinner)findViewById(R.id.spinner);
CustomAdapter adapter = new CustomAdapter(MainActivity.this,
R.layout.listitems_layout, R.id.title, rowItems);
spinner.setAdapter(adapter);
}
}
listitems_layout.xml:-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/image1"
android:padding="10dp"
/>
<TextView
android:layout_marginTop="30dp"
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/icon"
android:textColor="#CC0033"
android:text="Strawberry"
android:textSize="16dp" />
</LinearLayout>
CustomAdapter:-
package com.example.venkat.spinnerexample1;
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.view.LayoutInflater;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class CustomAdapter extends ArrayAdapter<RowItem> {
LayoutInflater flater;
public CustomAdapter(Activity context,int resouceId, int textviewId, List<RowItem> list){
super(context,resouceId,textviewId, list);
flater = context.getLayoutInflater();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
RowItem rowItem = getItem(position);
View rowview = flater.inflate(R.layout.listitems_layout,null,true);
TextView txtTitle = (TextView) rowview.findViewById(R.id.title);
txtTitle.setText(rowItem.getTitle());
ImageView imageView = (ImageView) rowview.findViewById(R.id.icon);
imageView.setImageResource(rowItem.getImageId());
return rowview;
}
}
RowItem:-
package com.example.venkat.spinnerexample1;
public class RowItem {
private int ImageId;
private String Title;
public RowItem(String Title,int ImageId){
this.Title = Title;
this.ImageId = ImageId;
}
public String getTitle(){
return Title;
}
public void setTitle(String Title){
this.Title = Title;
}
public int getImageId(){
return ImageId;
}
public void setImageId(int ImageId){
this.ImageId = ImageId;
}
@Override
public String toString() {
return Title ;
}
}
écran:-
---
qu'est-ce que l'exception?
java.lang.IllegalStateException: ArrayAdapter nécessite l'ID de ressource pour être un TextView c'est l'exception
java.lang.IllegalStateException: ArrayAdapter nécessite l'ID de ressource pour être un TextView c'est l'exception
OriginalL'auteur AbhiRam | 2016-03-14
Vous devez vous connecter pour publier un commentaire.
À l'intérieur de votre adaptateur constructeur, envoyer l'id de textview aussi
l'appeler par
MODIFIER
Vos images ne s'affichent pas parce que vous n'avez pas de remplacer la getDropdownView() la méthode. Cette méthode décide de la mise en page de l'enfant lors de liste déroulante est visible. Ajoutez donc cette méthode pour votre adaptateur
Suggestion
dans votre getView() de mettre un chèque de (convertview == null). Il pourrait ne pas avoir d'impact sur cette petite carte, mais dans le cas où votre carte est d'avoir plus d'éléments, il aura un impact sur la performance.
MODIFIER
Pour mettre votre spinner déroulante en dessous du point d'ancrage, l'utilisation
android:overlapAnchor="false"
à l'intérieur de votre spinnerj'ai mis à jour ur de code, mais les images ne sont pas de chargement à partir de la matrice de Liste
attendez laissez-moi vérifier
ok ok que les images ne se chargent pas de liste de tableaux, c'est mon problème
salut a u problème de vérification?
OriginalL'auteur Ankit Aggarwal
OriginalL'auteur shubham goyal