Search code examples
androidandroid-arrayadapter

how can i set fontsize for String[] values..how can i style that string


here is my menu_fragment.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:orientation="vertical" android:layout_width="match_parent"
            android:layout_height="match_parent">
            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="match_parent"
                android:layout_height="118dp"
                app:srcCompat="@drawable/three" />
 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="MENU"
        android:textColor="@android:color/holo_red_dark"
        android:textSize="22sp"
        android:textStyle="bold|italic" />
           <ListView
               android:id="@+id/listView"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:textAlignment="center"
               android:layout_weight="2"
               />
           <TextView
               android:id="@+id/textView"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:textSize="22sp"
               android:textColor="@android:color/holo_red_dark" />
        </LinearLayout>

n here is my MenuFragment.java

package com.maharajarasoiandevents.maharajarasoiandevents.mFragments;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.maharajarasoiandevents.maharajarasoiandevents.ChaatActivity;
import com.maharajarasoiandevents.maharajarasoiandevents.ExoticSpecialityActivity;
import com.maharajarasoiandevents.maharajarasoiandevents.R;
import com.maharajarasoiandevents.maharajarasoiandevents.SaladsActivity;
import com.maharajarasoiandevents.maharajarasoiandevents.SoupActivity;
import com.maharajarasoiandevents.maharajarasoiandevents.StarterActivity;
import com.maharajarasoiandevents.maharajarasoiandevents.WelcomeDrinkActivity;


public class MenuFragment extends Fragment {

    ListView listView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        final View rootView=inflater.inflate(R.layout.menu_fragment,container,false);

        listView = (ListView) rootView.findViewById(R.id.listView);
        final String[] values = new String[]{"Welcome Drink","Moving Starter","Soup","Salads","Chaat","Exotic Speciality"};
        ArrayAdapter<String> adapter;
        adapter = new ArrayAdapter<String>(getActivity(), R.layout.menu_fragment, R.id.textView, values);
        listView.setAdapter(adapter);



        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
                if (pos == 0) {
                    Intent myIntent = new Intent(rootView.getContext(), WelcomeDrinkActivity.class);
                    startActivityForResult(myIntent,0);
                }
                if(pos==1){
                    Intent myIntent=new Intent(rootView.getContext(), StarterActivity.class);
                    startActivityForResult(myIntent,1);
                }
                if(pos==2){
                    Intent myIntent=new Intent(rootView.getContext(), SoupActivity.class);
                    startActivityForResult(myIntent,2);
                }
                if(pos==3){
                    Intent myIntent=new Intent(rootView.getContext(), SaladsActivity.class);
                    startActivityForResult(myIntent,1);
                }
                if(pos==4){
                    Intent myIntent=new Intent(rootView.getContext(), ChaatActivity.class);
                    startActivityForResult(myIntent,2);
                }
                if(pos==5){
                    Intent myIntent=new Intent(rootView.getContext(), ExoticSpecialityActivity.class);
                    startActivityForResult(myIntent,1);
                }

        }
    });
        return rootView;
    }
}

i want only 1 image and 1 textview where i wrote MENU as text.. on top of that page ....n even i took only one image and 1 textview in my menu_fragment.xml ...but its showing multiple images n textviews...why so? means listview is repeating again n again but i dont want to show that image n textview every time..just like listview.. m editing my code ..plz check it :)


Solution

  • Try this:

    ListView listView;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    
        View rootView = inflater.inflate(R.layout.menu_fragment, container, false);
        listView = (ListView) rootView.findViewById(R.id.listView);
        final String[] values = new String[]{"starter", "juices", "roties"};
        // edited
        MyArrayAdapter adapter;
        // edited ,add size and color parameters
        adapter = new MyArrayAdapter(getActivity(), R.layout.menu_fragment, R.id.textView, values,Color.RED, 16f);
        listView.setAdapter(adapter);
    
        return rootView;
    }
    

    Edited

    Add MyArrayAdapter

    public class MyArrayAdapter extends ArrayAdapter {
    
        private int color;
        private float size;
    
        // edited ,add size and color parameters
        public MyArrayAdapter(Context context, int layoutId, int resource, Object[] objects, int color, float size) {
            super(context, layoutId, resource, objects);
            this.color = color;
            this.size = size;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            String str = (String) getItem(position);
            if (convertView == null) {
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.menu_fragment, parent, false);
            }
            TextView tv = (TextView) convertView.findViewById(R.id.textView);
            tv.setText(str);
            // edited , modified setTextSize and setTextColor
            tv.setTextSize(size);
            tv.setTextColor(color);
            return convertView;
        }
    }
    

    Hope to help you.