2017-04-22 1 views
1

enter image description here Mon texte ne s'affiche pas avec la vue de l'image Je ne connais personne qui peut me corriger. code suivant est le principal code d'activité java je suis en train d'ajouter une vue de texte et qui ne fonctionne pas Mainactivity.javaPourquoi mon texte n'apparaît pas avec la vue de l'image dans spinner?

package com.example.xainshah.spinner; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.Spinner; 
import android.widget.SpinnerAdapter; 


public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { 

    String countryNames[]={"pakistan","india","Bangladesh","Sri Lanka"}; 
    int flags[]={R.drawable.pak,R.drawable.ind,R.drawable.ban,R.drawable.sri}; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Spinner spin=(Spinner)findViewById(R.id.spinner); 
     spin.setOnItemSelectedListener(this); 
     CustomAdapter customAdapter=new CustomAdapter(getApplicationContext(),flags,countryNames); 
     spin.setAdapter(customAdapter); 

    } 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
} 

adaptateur code classe client est

CustomAdapter.java

package com.example.xainshah.spinner; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

/** 
* Created by Xain Shah on 4/22/2017. 
*/ 

public class CustomAdapter extends BaseAdapter{ 
    Context context; 
    int flags[]; 
    String countryNames[]; 
    LayoutInflater Inflater; 
    public CustomAdapter(Context applicationcontext,int flags[],String countryNames[]){ 
     this.context=applicationcontext; 
     this.flags=flags; 
     this.countryNames=countryNames; 
     Inflater=(LayoutInflater.from(applicationcontext)); 
    } 

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

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

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     convertView=Inflater.inflate(R.layout.spinner_layout,null); 
     ImageView icon=(ImageView)convertView.findViewById(R.id.imageView); 
     TextView names=(TextView)convertView.findViewById(R.id.textView2); 
     icon.setImageResource(flags[position]); 
     names.setText(countryNames[position]); 
     return convertView; 
    } 
} 

spinner_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:padding="10dp" 
     app:srcCompat="@mipmap/ic_launcher" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="42dp" 
     android:layout_weight="1" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

</LinearLayout> 
+0

s'il vous plaît ajouter capture d'écran vous sortie –

+0

publier votre mise en page de spinner ... – rafsanahmad007

+0

Vous obtiendrez votre répondez ici http://stackoverflow.com/questions/24422236/how-to-dynamically-populate-android-spinner-with-text-image –

Répondre

1

code:

public class CustomAdapter extends ArrayAdapter<String> { 

     private final Activity context; 
     private final String[] countryNames; 
     private final Integer[] imgid; 

     public CustomAdapter(Activity context, Integer flags[],String countryNames[]) { 
      super(context, R.layout.spinner_layout, countryNames); 
      // TODO Auto-generated constructor stub 

      this.context=context; 
      this.countryNames =countryNames; 
      this.imgid=flags; 
     } 

     public View getView(int position,View view,ViewGroup parent) { 
      LayoutInflater inflater=context.getLayoutInflater(); 
      View rowView=inflater.inflate(R.layout.spinner_layout, null,true); 

      TextView txtTitle = (TextView) rowView.findViewById(R.id.textView2); 
      ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView); 

      txtTitle.setText(countryNames[position]); 
      imageView.setImageResource(imgid[position]); 
      return rowView; 

     } 
     @Override 
     public View getDropDownView(int position, View convertView,ViewGroup parent) { 
      return getView(position, convertView, parent); 
     } 

     @Override 
     public String getItem(int position) { 
      return String.valueOf(countryNames.toString()); 
     } 
} 

appel à l'aide:

CustomAdapter customAdapter=new CustomAdapter(MainActivity.this,flags,countryNames); 

Pour une utilisation de mise en page:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:padding="10dp" 
     app:srcCompat="@mipmap/ic_launcher" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="42dp" 
     android:layout_weight="1" 
     android:gravity="center|left" 
     android:text="FDFDFDFD" 
     android:textSize="15sp" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1" 
     android:textColor="#000000" /> 

</LinearLayout> 
+0

j'ai éidé le code de l'adaptateur ... et son code d'appel en activité .. – rafsanahmad007

+0

mais il donne erreur –

+1

mais il montre OK dans mon code..pls copier l'édité code et construire propre – rafsanahmad007