-3

I have Spinner with custom layout in Android Studio: user can choose item with custom layout ( Image + text) I need to view only text on spinner after selected not full layout

custom layout

enter image description here

NOT LIKE THIS:

enter image description here


My custom Adapter:

public class ColorAdapter2 extends ArrayAdapter<colorItem> {
    LayoutInflater inflater;
    ArrayList< colorItem>  items;
    public ColorAdapter2(Context context, int textViewResourceId,
                         ArrayList< colorItem> objects , LayoutInflater inflater) {
        super(context, textViewResourceId, objects);
        this.inflater = inflater;
        items = objects;
    }

    @Override
    public View getDropDownView(int position, View convertView,
                                ViewGroup parent) {

        return getCustomView(position, convertView, parent);
    }

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

        return getCustomView(position, convertView, parent);
    }

    public View getCustomView(int position, View convertView, ViewGroup parent) {


        View row = inflater.inflate(R.layout.color_item, parent, false);
        TextView label = (TextView) row.findViewById(R.id.nameColor);
        label.setText(items.get(position).getName());

        ImageView icon = (ImageView) row.findViewById(R.id.iconColor);

        icon.setImageResource(items.get(position).getImageId());
        return row;
    }
}

...and the row layout:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:background="@drawable/edittext"
    android:padding="10dp"
    android:layout_margin="10dp">

    <ImageView
        android:id="@+id/iconColor"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_marginLeft="30dp"
        android:src="@drawable/blue_image"/>

    <TextView
        android:id="@+id/nameColor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>
Jay Rathod
  • 11,131
  • 6
  • 34
  • 58
Fadi
  • 181
  • 5
  • 15

4 Answers4

1

please try manually hide elements by

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {                
        view.findViewById(R.id.viewYouWantToHide).setVisibility(View.GONE);
    }

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

and you probably need to restore elements you hide to be visible when spinner is re-selected with another element or selected nothing

JiratPasuksmit
  • 672
  • 7
  • 18
0

Use view provided by event for hidden/make visibility zero for default text or selected text on spinner or static text.

 public void onItemSelected(AdapterView<?> parentView, View view, int position, long id) {
    TextView tv = (TextView) view;
    tv.setVisibility(View.GONE);
    }
Manuelvalles
  • 380
  • 2
  • 6
-1

On Spinner Item Selected Hide your Imageview and set it visible on Nothing Selected

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        // your code here

      selectedItemView.findViewById(R.id.iconColor).setVisibility(View.GONE);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        // your code here
    }

});
Dipali Shah
  • 3,742
  • 32
  • 47
-1

So you can listen to the itemSelectedEvent and then retrieve ImageView from it and then set it's visibility to "GONE".

Here is the example how you are gonna do this.

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View view, int position, long id) {
    // your code here
ImageView imageView = view.findViewById(R.id.iconColor);
imageView.setVisibility(View.GONE);
}

@Override
public void onNothingSelected(AdapterView<?> parentView) {
    // your code here
}
});
Dushyant Suthar
  • 673
  • 2
  • 9
  • 27