Open top menu





activity_main.xml
...................................................................................................................................................................
xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:id="@+id/activity_main"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:paddingBottom="@dimen/activity_vertical_margin"
   
android:paddingLeft="@dimen/activity_horizontal_margin"
   
android:paddingRight="@dimen/activity_horizontal_margin"
   
android:paddingTop="@dimen/activity_vertical_margin"
   
android:orientation="vertical"
   
android:gravity="center|top"
   
tools:context="com.project.example.buttonshapes.MainActivity">

    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
        
android:text="Clickble Button Shpes" />

    <
Button
       
android:text="Button"
       
android:layout_width="fill_parent"
       
android:layout_height="wrap_content"
       
android:id="@+id/button"
       
android:layout_margin="7dp"
       
android:background="@drawable/btn_gradient"/>

    <
Button
       
android:text="Button1"
       
android:layout_width="fill_parent"
       
android:layout_height="wrap_content"
       
android:id="@+id/button1"
       
android:layout_margin="7dp"
       
android:textColor="#ffffff"
       
android:background="@drawable/green_back_button"/>

</
LinearLayout>
 ..................................................................................................................................................................


btn_top_shape.xml
...................................................................................................................................................................

xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <
corners
        
android:topLeftRadius="6dp"
       
android:topRightRadius="6dp"
       
android:bottomRightRadius="6dp"
       
android:bottomLeftRadius="6dp">
    </
corners>
    <
stroke
       
android:width="3dp"
       
android:color="#999999">
    </
stroke>
    <
gradient
       
android:angle="270"
       
android:startColor="#a0a0a0"
       
android:endColor="#ffffff">
    </
gradient>
</
shape>
...................................................................................................................................................................


btn_bottom_shape.xml
...................................................................................................................................................................


xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <
corners
       
android:topLeftRadius="6dp"
       
android:topRightRadius="6dp"
       
android:bottomRightRadius="6dp"
       
android:bottomLeftRadius="6dp">
    </
corners>
    <
stroke
       
android:width="3dp"
       
android:color="#999999">
    </
stroke>
    <
gradient
       
android:angle="270"
       
android:startColor="#ffffff"
       
android:endColor="#a0a0a0">
    </
gradient>
</
shape>
...................................................................................................................................................................


btn_gradient.xml
...................................................................................................................................................................

xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <
item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/btn_top_shape" />
    <
item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/btn_top_shape" />
    <
item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/btn_bottom_shape" />
    <
item android:drawable="@drawable/btn_top_shape" />
</
selector>

 ..................................................................................................................................................................


green_back_button.xml
...................................................................................................................................................................

xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <
corners
       
android:topLeftRadius="4dp"
       
android:topRightRadius="4dp"
       
android:bottomRightRadius="4dp"
       
android:bottomLeftRadius="4dp">
    </
corners>
    <
stroke
       
android:width="6dp"
       
android:color="#008040">
    </
stroke>
    <
gradient
       
android:angle="270"
       
android:startColor="#008080"
       
android:endColor="#008000">
    </
gradient>
</
shape>
 ..................................................................................................................................................................

 green_bottom_select.xml
 ..................................................................................................................................................................


xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"


android:shape="rectangle">
    <
corners
       
android:topLeftRadius="4dp"
       
android:topRightRadius="4dp"
       
android:bottomRightRadius="4dp"
        
android:bottomLeftRadius="4dp">
    </
corners>
    <
stroke
       
android:width="6dp"
       
android:color="#008040">
    </
stroke>
    <
gradient
       
android:angle="270"
       
android:startColor="#008000"
       
android:endColor="#008080">
    </
gradient>
</
shape>
 ..................................................................................................................................................................


green_back_button.xml
 ..................................................................................................................................................................

xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <
item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/green_top_select" />
    <
item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/green_top_select" />
    <
item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/green_bottom_select" />
    <
item android:drawable="@drawable/green_top_select" />
</
selector>
 ..................................................................................................................................................................






Read more

activity_main.xml
...................................................................................................................................................................

xml version="1.0" encoding="utf-8"
?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:id="@+id/activity_main"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
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="com.project.example.customexpendablelistviewdemo.MainActivity"
>

     <ExpandableListView
        
android:layout_width="match_parent"
        
android:layout_height="match_parent"
        
android:id="@+id/listViewforSeat"
>
     </ExpandableListView>
</RelativeLayout>

...................................................................................................................................................................


List_summary_group.xml
...................................................................................................................................................................


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

    <LinearLayout
       
android:orientation="horizontal"
       
android:layout_width="match_parent"
       
android:padding="8dp"
       
android:layout_marginRight="5dp"
       
android:layout_marginLeft="5dp"
       
android:layout_height="wrap_content"
>
        <TextView
           
android:layout_width="0dp"
           
android:layout_height="wrap_content"
           
android:layout_weight="1"
           
android:paddingTop="5dp"
           
android:paddingBottom="5dp"
           
android:paddingLeft="18dp"
           
android:id="@+id/textHeadertype"
/>

        <TextView
           
android:layout_width="0dp"
           
android:layout_height="wrap_content"
           
android:id="@+id/textheaderguest_Count"
           
android:layout_weight=".5"
           
android:paddingLeft="8dp"
           
/>


    </LinearLayout>

</LinearLayout>

...................................................................................................................................................................


List_summary_child.xml
...................................................................................................................................................................


xml version="1.0" encoding="utf-8"
?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:orientation="vertical" android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:background="#dddddd"
>

    <LinearLayout
       
android:orientation="horizontal"
       
android:layout_width="match_parent"
       
android:padding="4dp"
       
android:layout_height="wrap_content"
>
        <TextView
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:layout_weight="1"
           
android:id="@+id/textchildtype"
/>

        <TextView
           
android:layout_width="100dp"
           
android:layout_height="wrap_content"
           
android:id="@+id/textchildguest_Count"
/>

        <Button
           
android:layout_width="70dp"
           
android:layout_height="40dp"

           
android:id="@+id/chengeSeatBtn"
/>


    </LinearLayout>

</LinearLayout>




 ...................................................................................................................................................................


Summarychild.Java
...................................................................................................................................................................


public class summarychild {
    private String Count;
    private String Ailrline;
    private String GuestType;

    public String getCount() {
        return Count;
    }

    public void setCount(String count) {
        Count = count;
    }

    public String getAilrline() {
        return Ailrline;
    }

    public void setAilrline(String ailrline) {
        Ailrline = ailrline;
    }

    public String getGuestType() {
        return GuestType;
    }

    public void setGuestType(String guestType) {
        GuestType = guestType;
    }



...................................................................................................................................................................

SummaryGroup.Java
...................................................................................................................................................................



public class SummaryGroup {
    private String Name;
    private String count;
    private ArrayList Items;

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getCount() {
        return count;
    }

    public void setCount(String count) {
        this.count = count;
    }

    public ArrayList getItems() {
        return Items;
    }

    public void setItems(ArrayList items) {
        Items = items;
    }
}

 ...................................................................................................................................................................



AdapterForSummarySeat.Java
 ...................................................................................................................................................................

public class AdapterForSummarySeat extends BaseExpandableListAdapter {
    private Context context;
    private ArrayList groups;
    private ArrayList arraylist;
    public static int count;
    public static ArrayList AirlineName=new ArrayList<>();

    public AdapterForSummarySeat(Context context, ArrayList groups) {
        this.context = context;
        this.groups = groups;
        this.arraylist=new ArrayList();
        this.arraylist.addAll(groups);
    }

    @Override
   
public int getGroupCount() {
        return groups.size();
    }

    @Override
   
public int getChildrenCount(int groupPosition) {
        ArrayList summchList = groups.get(groupPosition).getItems();
        return summchList.size();
    }

    @Override
   
public Object getGroup(int groupPosition) {
        return groups.get(groupPosition);
    }

    @Override
   
public Object getChild(int groupPosition, int childPosition) {
        ArrayList chList = groups.get(groupPosition).getItems();
        return chList.get(childPosition);
    }

    @Override
   
public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
   
public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
   
public boolean hasStableIds() {
        return true;
    }

    @Override
   
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {

        SummaryGroup group = (SummaryGroup) getGroup(groupPosition);
        if (convertView == null) {
            LayoutInflater inf = (LayoutInflater) context
                   
.getSystemService(context.LAYOUT_INFLATER_SERVICE);
            convertView = inf.inflate(R.layout.list_summary_group, null);
        }
        TextView  textHeadertype= (TextView) convertView.findViewById(R.id.textHeadertype);
        TextView  textheaderguest_Count= (TextView) convertView.findViewById(R.id.textheaderguest_Count);
        textHeadertype.setText(group.getName());
        textheaderguest_Count.setText(group.getCount());
        return convertView;
    }

    @Override
   
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        final ViewHolder holder;
        final int possition=childPosition;
        final summarychild child = (summarychild) getChild(groupPosition, childPosition);
        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) context
                   
.getSystemService(context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_summary_child, null);
        }
        holder = new ViewHolder();
        try {
            holder.textchildtype = (TextView) convertView.findViewById(R.id.textchildtype);
            holder.textchildguest_Count = (TextView) convertView.findViewById(R.id.textchildguest_Count);
            holder.textchildtype.setText(child.getAilrline());
            holder.textchildguest_Count.setText(child.getCount());
        }catch (Exception e){
            e.printStackTrace();
        }
        return convertView;
    }

    @Override
   
public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

    public void filter(String charText) {

        charText = charText.toLowerCase(Locale.getDefault());
        groups.clear();
        if (charText.length() == 0) {
            groups.addAll(arraylist);
        }
        else
       
{
            for (SummaryGroup sp : arraylist)
            {
                if (sp.getName().toLowerCase(Locale.getDefault()).contains(charText))
                {
                    groups.add(sp);
                }else if (sp.getCount().toLowerCase(Locale.getDefault()).contains(charText)){
                    groups.add(sp);
                }


        }
    }
    notifyDataSetChanged();
}


static class ViewHolder {

        TextView textchildtype,textchildguest_Count;
    }

}

 ..................................................................................................................................................................




MainActivity.Java
...................................................................................................................................................................


public class MainActivity extends AppCompatActivity {

    public static ArrayList SummaryGroupInfo;
    public static ArrayList Group;
    public static ArrayList SummarychildInfo;
    public static ArrayList childInfo;

    @Override
   
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SummaryGroupInfo = new ArrayList();
        SummarychildInfo = new ArrayList();
        Group = new ArrayList<>();

        for (int i = 0; i < 3; i++) {
            SummaryGroup SeatDeatils = new SummaryGroup();
            SeatDeatils.setName("FlightNo " + i);
            SeatDeatils.setCount("STD " + i);
            SummaryGroupInfo.add(SeatDeatils);
        }

        for (int j = 0; j < 3; j++) {
            summarychild child = new summarychild();
            child.setAilrline("Airline " + j);
            child.setCount("Count " + j);
            child.setGuestType("GuestType " + j);
            SummarychildInfo.add(child);
        }

        for (int g = 0; g < SummaryGroupInfo.size(); g++) {
            SummaryGroup Info = new SummaryGroup();
            SummaryGroup setinfo = SummaryGroupInfo.get(g);
            Info.setName(setinfo.getName());
            Info.setCount(setinfo.getCount());
            childInfo = new ArrayList();

            for (int c = 0; c < SummarychildInfo.size(); c++) {
                summarychild childInfos = SummarychildInfo.get(c);
                summarychild addchild = new summarychild();

                addchild.setAilrline(childInfos.getAilrline());
                addchild.setCount(childInfos.getCount());
                childInfo.add(addchild);

            }
            Info.setItems(childInfo);
            Group.add(Info);
        }
        final ExpandableListView list_alert = (ExpandableListView) findViewById(R.id.listViewforSeat);
        final AdapterForSummarySeat adapter = new AdapterForSummarySeat(MainActivity.this, Group);
        list_alert.setAdapter(adapter);
        list_alert.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
            @Override
           
public void onGroupExpand(int groupPosition) {
                int len = adapter.getGroupCount();
                for (int i = 0; i < len; i++) {
                    if (i != groupPosition) {
                        list_alert.collapseGroup(i);
                    }
                }
            }
        });
    }
}
 ...................................................................................................................................................................







Read more






Explain:-In this blog explain , How to Get Runtime Permisson( for MarshMallow) in android?

MarshMallowPermission  permission=new MarshMallowPermission(this);

.........................................................................................................................................................



     @Override
   
public void onClick(View v) {
       
switch (v.getId()) {

           
case R.id.SaveButton:
               
permission=new MarshMallowPermission(this);
               
if (!permission.checkPermissionForExternalStorage()){
                   
permission.requestPermissionForExternalStorage();
                }
else {
                        Toast.makeText(MainActivity.
this, "Permission Is Allowed", Toast.LENGTH_SHORT).show();
                    }
                 break;
         }

    }

.........................................................................................................................................................





MarshMallowPermission.Java
Add permission Class ,the class get permission on run Time For MarshMallow.

.........................................................................................................................................................
public class MarshMallowPermission {
   
public static final int RECORD_PERMISSION_REQUEST_CODE = 1;
   
public static final int EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE = 2;
   
public static final int CAMERA_PERMISSION_REQUEST_CODE = 3;
   
public static final int READ_PHONE_STATE_PERMISSION_REQUEST_CODE = 4;
    Activity
activity;

   
public MarshMallowPermission(Activity activity) {
       
this.activity = activity;
    }

   
public boolean checkPermissionForRecord(){
       
int result = ContextCompat.checkSelfPermission(activity, Manifest.permission.RECORD_AUDIO);
       
if (result == PackageManager.PERMISSION_GRANTED){
           
return true;
        }
else {
           
return false;
        }
    }

   
public boolean checkPermissionForExternalStorage(){
       
int result = ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
       
if (result == PackageManager.PERMISSION_GRANTED){
           
return true;
        }
else {
           
return false;
        }
    }

   
public boolean checkPermissionForCamera(){
       
int result = ContextCompat.checkSelfPermission(activity, Manifest.permission.CAMERA);
       
if (result == PackageManager.PERMISSION_GRANTED){
           
return true;
        }
else {
           
return false;
        }
    }

   
public boolean checkPermissionForReadPhoneState(){
       
int result = ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_PHONE_STATE);
       
if (result == PackageManager.PERMISSION_GRANTED){
           
return true;
        }
else {
           
return false;
        }
    }

   
public void requestPermissionForRecord(){
       
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.RECORD_AUDIO)){
            Toast.makeText(
activity, "Microphone permission needed for recording. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show();
        }
else {
            ActivityCompat.requestPermissions(
activity,new String[]{Manifest.permission.RECORD_AUDIO},RECORD_PERMISSION_REQUEST_CODE);
        }
    }

   
public void requestPermissionForExternalStorage(){
       
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)){
            Toast.makeText(
activity, "External Storage permission needed. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show();
        }
else {
            ActivityCompat.requestPermissions(
activity,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE);
        }
    }

   
public void requestPermissionForCamera(){
       
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.CAMERA)){
            Toast.makeText(
activity, "Camera permission needed. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show();
        }
else {
            ActivityCompat.requestPermissions(
activity,new String[]{Manifest.permission.CAMERA},CAMERA_PERMISSION_REQUEST_CODE);
        }
    }

   
public void requestPermissionReadPhoneState(){
       
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.READ_PHONE_STATE)){
            Toast.makeText(
activity, "Read Phone State permission needed. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show();
        }
else {
            ActivityCompat.requestPermissions(
activity,new String[]{Manifest.permission.READ_PHONE_STATE},READ_PHONE_STATE_PERMISSION_REQUEST_CODE);
        }
    }
}



 .........................................................................................................................................................






 
Read more