Showing posts with label singleton class. Show all posts
Showing posts with label singleton class. Show all posts

Friday, 21 February 2014

HighLighting the Selected List Item using SingleTon Pattern in Android

 Instant Adapter Library Add to your Eclipse Project

 https://github.com/ragunathjawahar/instant-adapter

activity_main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@+id/demo_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"  />

</RelativeLayout>


list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/par_relative"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="12dp"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/imageView1"
        android:text="Large Text"
        android:layout_centerVertical="true"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>


Contact.java

package com.example.insta;

public class Contact {

    private int drawableResId;
    private String contactName;

    public Contact(int drawableResId, String contactName) {
        this.drawableResId = drawableResId;
        this.contactName = contactName;
    }

    public int getDrawableResId() {
        return drawableResId;
    }

    public void setDrawableResId(int drawableResId) {
        this.drawableResId = drawableResId;
    }

    public String getContactName() {
        return contactName;
    }

    public void setContactName(String contactName) {
        this.contactName = contactName;
    }
}

GlobalSingleTon.java

package com.example.insta;
public class GlobalSingleTon {

    private static int position = -1;
    private GlobalSingleTon globalSingleton = null;

    private GlobalSingleTon() {}

    public static synchronized GlobalSingleTon getInstance() {  

         if(globalSingleton == null) {
                     globalSingleton =  new GlobalSingleTon();
         }
         return globalSingleton;
    }

    public static int getPosition() {
        return position;
    }

    public static void setPosition(int position) {
        GlobalSingleTon.position = position;
    }   
}

MainActivity.java


package com.example.insta;

import com.mobsandgeeks.adapters.InstantAdapter;
import com.mobsandgeeks.adapters.ViewHandler;

import android.app.Activity;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity implements ViewHandler<Contact> {

    private ListView mContactListView;

    private List<Contact> mContactList;

    private InstantAdapter<Contact> mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContactListView = (ListView)findViewById(R.id.demo_list);
        mContactList = new ArrayList<Contact>();
        mContactList.add(new Contact(R.drawable.ic_launcher, "Rajesh"));
        mContactList.add(new Contact(R.drawable.ic_launcher, "Rajesh"));
        mContactList.add(new Contact(R.drawable.ic_launcher, "Rajesh"));
        mContactList.add(new Contact(R.drawable.ic_launcher, "Rajesh"));
        mContactList.add(new Contact(R.drawable.ic_launcher, "Rajesh"));

        mAdapter = new InstantAdapter<Contact>(this, R.layout.list_item, Contact.class,
                mContactList);
        mAdapter.setViewHandler(R.id.imageView1, this);
        mAdapter.setViewHandler(R.id.textView1, this);
        mAdapter.setViewHandler(R.id.par_relative, this);

        mContactListView.setAdapter(mAdapter);
    }

    @Override
    public void handleView(ListAdapter adapter, View parent, final View view, Contact contact,
            int position) {
        switch (view.getId()) {
            case R.id.imageView1:
                ((ImageView)view).setBackgroundResource(contact.getDrawableResId());
                break;
            case R.id.textView1:
                ((TextView)view).setText(contact.getContactName());
                break;
            case R.id.par_relative:
                final int pos = position;
                ((RelativeLayout)view).setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        GlobalSingleTon.setPosition(pos);
                        mAdapter.notifyDataSetChanged();
                      
                    }
                });
        }
      
        if(position == GlobalSingleTon.getPosition()) {
            view.setBackgroundColor(Color.GREEN);
        } else {
            view.setBackgroundColor(Color.WHITE);
        }
    }
}


output :



Source Code :  Coming Soon..