lundi 25 mai 2015

Unable to change ImageView during runtime

I have a custom view from a git Library in my activity_main.xml, which uses an attribute to display logo image. Layout of logo is defined in another XML file, which has an ImageView with android:src ="@drawable/profile". Custom view also has material tab layout in it. I want to change the logo image when the tab is changed. i.e, when I navigate from tab1 to tab2, source image of ImageView in logo.xml should be changed. I'm trying to do it with LayoutInflater in my MainActivity.java onCreate().

 LinearLayout v;
   CircleImageView c;
    LayoutInflater li =getLayoutInflater();
    v= (LinearLayout)li.inflate(R.layout.header_logo,null);
    c = (CircleImageView)v.findViewById(R.id.profile_image);
    c.setImageResource(R.drawable.profile2);

It should change the the logo image from profile to profile2 as soon as activity is launched. But the logo image doesn't change.

Here is the MainActivity.java

    package graph.prathya.com.nxtstepz3;

    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.drawable.BitmapDrawable;
    import android.graphics.drawable.Drawable;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentStatePagerAdapter;
    import android.support.v4.content.res.ResourcesCompat;
    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.app.ActionBarDrawerToggle;
    import android.support.v7.widget.Toolbar;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.LinearLayout;

    import de.hdodenhof.circleimageview.CircleImageView;
    import graph.prathya.com.nxtstepz3.fragment.*;
    import com.github.florent37.materialviewpager.MaterialViewPager;
    import com.oguzdev.circularfloatingactionmenu.library.FloatingActionButton;
    import com.oguzdev.circularfloatingactionmenu.library.FloatingActionMenu;
    import com.oguzdev.circularfloatingactionmenu.library.SubActionButton;


    public class MainActivity extends ActionBarActivity {

        private MaterialViewPager mViewPager;

        private DrawerLayout mDrawer;
        private ActionBarDrawerToggle mDrawerToggle;
        private Toolbar toolbar;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            LinearLayout v;
            CircleImageView c;
            LayoutInflater li =getLayoutInflater();
            v= (LinearLayout)li.inflate(R.layout.header_logo,null);
            c = (CircleImageView)v.findViewById(R.id.profile_image);
            c.setImageResource(R.drawable.profile2);
            setTitle("");

            mViewPager = (MaterialViewPager) findViewById(R.id.materialViewPager);

            toolbar = mViewPager.getToolbar();
            mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ImageView icon = new ImageView(this); // Create an icon
            icon.setImageResource(R.mipmap.ic_launcher);
            FloatingActionButton actionButton = new FloatingActionButton.Builder(this)
                    .setContentView(icon)
                    .build();


            if (toolbar != null) {
                setSupportActionBar(toolbar);

                final ActionBar actionBar = getSupportActionBar();
                if (actionBar != null) {
                    actionBar.setDisplayHomeAsUpEnabled(true);
                    actionBar.setDisplayShowHomeEnabled(true);
                    actionBar.setDisplayShowTitleEnabled(true);
                    actionBar.setDisplayUseLogoEnabled(false);
                    actionBar.setHomeButtonEnabled(true);

                }
            }

            mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer, 0, 0);
            mDrawer.setDrawerListener(mDrawerToggle);

            mViewPager.getViewPager().setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {

                int oldPosition = -1;

                @Override
                public Fragment getItem(int position) {
                    switch (position) {
                        //case 0:
                        //    return RecyclerViewFragment.newInstance();
                        //case 1:
                          //  return ScrollFragment.newInstance();
                        //case 2:
                        //    return WebViewFragment.newInstance();
                        default:
                            return RecyclerViewFragment.newInstance();
                    }
                }

                @Override
                public void setPrimaryItem(ViewGroup container, int position, Object object) {
                    super.setPrimaryItem(container, position, object);

                    //only if position changed
                    if (position == oldPosition)
                        return;
                    oldPosition = position;

                    int color = 0;
                    String imageUrl = "";
                    switch (position) {
                        case 0:
                            imageUrl = "http://ift.tt/1Qx9Gwe";
                            color = getResources().getColor(R.color.green_teal);
                            break;
                        case 1:
                            imageUrl = "http://ift.tt/1GyiQ7U";
                            color = getResources().getColor(R.color.green);


                            break;
                        case 2:
                            imageUrl = "http://ift.tt/1vo8u4o";
                            color = getResources().getColor(R.color.cyan);
                            break;
                        case 3:
                            imageUrl = "http://ift.tt/Vnobui";
                            color = getResources().getColor(R.color.red);
                            break;
                    }

                    final int fadeDuration = 400;
                  mViewPager.setImageUrl(imageUrl,fadeDuration);

                    mViewPager.setColor(color, fadeDuration);




                }

                @Override
                public int getCount() {
                    return 4;
                }

                @Override
                public CharSequence getPageTitle(int position) {
                    switch (position) {
                        case 0:
                            return "Passion";
                        case 1:
                            return "Project";
                        case 2:
                            return "Events";
                        case 3:
                            return "Group Studies";
                    }
                    return "";
                }
            });
            mViewPager.getViewPager().setOffscreenPageLimit(mViewPager.getViewPager().getAdapter().getCount());
            mViewPager.getPagerTitleStrip().setViewPager(mViewPager.getViewPager());

            mViewPager.getViewPager().setCurrentItem(1);
        }

        @Override
        protected void onPostCreate(Bundle savedInstanceState) {
            super.onPostCreate(savedInstanceState);
            mDrawerToggle.syncState();
        }


    }

Here is activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout    xmlns:android="http://ift.tt/nIICcg"
xmlns:app="http://ift.tt/GEGVYd"
xmlns:tools="http://ift.tt/LrGmb4"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.github.florent37.materialviewpager.MaterialViewPager

    android:id="@+id/materialViewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:viewpager_logo="@layout/header_logo"
    app:viewpager_pagerTitleStrip="@layout/material_view_pager_pagertitlestrip_newstand"
    app:viewpager_logoMarginTop="50dp"
    app:viewpager_color="#00b5ad"
    app:viewpager_headerHeight="200dp"
    app:viewpager_headerAlpha="0.6"
    app:viewpager_hideLogoWithFade="true"
    app:viewpager_hideToolbarAndTitle="false"
    app:viewpager_enableToolbarElevation="true"
    app:viewpager_parallaxHeaderFactor="1.5"
    app:viewpager_headerAdditionalHeight="50dp"
    app:viewpager_header="@layout/header_logo_2"
    />

<include layout="@layout/drawer" />

Here is header_logo.xml where our ImageView lies.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
xmlns:android="http://ift.tt/nIICcg"
android:gravity="center">
<de.hdodenhof.circleimageview.CircleImageView    xmlns:app="http://ift.tt/GEGVYd"
 xmlns:android="http://ift.tt/nIICcg"
android:id="@+id/profile_image"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/profile"
app:border_width="2dp"
app:border_color="#FF000000" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Paul Walker"
    android:textSize="25dp"
    android:textColor="#000000"
    android:textStyle="italic"
    android:layout_marginTop="10dp"
    />

Aucun commentaire:

Enregistrer un commentaire