Showing posts with label adapter. Show all posts
Showing posts with label adapter. Show all posts

Friday, 8 July 2016

Horizontal List using recycler view in android

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:layout_gravity="center"
/>

item_view.xml 
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#efefef"
android:layout_margin="5dp">
<ImageView
android:id="@+id/item_icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_centerVertical="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginRight="6dip"
android:src="@android:drawable/ic_notification_overlay"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/item_icon"
android:layout_centerVertical="true"
android:layout_margin="5dp"
android:padding="5dp"
android:background="@android:color/white"
android:orientation="vertical">
<TextView
android:id="@+id/item_text"
android:layout_width="match_parent"
android:layout_height="26dp"
android:ellipsize="marquee"
android:singleLine="true"
android:textColor="@android:color/black"
android:textSize="16sp"/>
<TextView
android:id="@+id/item_text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=":)"
android:textColor="@android:color/holo_blue_bright"
android:textSize="12sp"/>
</LinearLayout>
</RelativeLayout>
  

MyRecyclerHolder.java

 package com.rajeshvijayakumar.recycler;

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class MyRecyclerHolder extends RecyclerView.ViewHolder {
 
public TextView textView;
public ImageView imageView;
public TextView textView2;
 
    public MyRecyclerHolder(View view) {
      super(view);
      this.imageView = (ImageView) view.findViewById(R.id.item_icon);
      this.textView = (TextView) view.findViewById(R.id.item_text);
      this.textView2 =(TextView) view.findViewById(R.id.item_text2);
    }
}

MyRecyclerAdapter.java

package com.rajeshvijayakumar.recycler;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerHolder> {

String[] menus;
Context adapContext;
public MyRecyclerAdapter(Context context, String[] menu) { adapContext = context; menus = menu;
}
@Override
public MyRecyclerHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(
R.layout.item, null);
MyRecyclerHolder viewHolder = new MyRecyclerHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(MyRecyclerHolder viewHolder, int i) {
// int length = (menus != null && menus.length > 0) ? menus.length : 0; if (i < length) {
viewHolder.textView.setText(menus[i]);
}
}
@Override
public int getItemCount() {
return (null != menus ? menus.length : 0);
}
//
}

RecyclerDemoActivity.java

package com.rajeshvijayakumar.recycler;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

public class RecyclerDemoActivity extends AppCompatActivity {

private RecyclerView mRecyclerView;
private MyRecyclerAdapter adapter;
private String[] menus = { "item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item9", "item10",
"item11", "item12", "item13", "item14", "item15", "item16", "item17", "item18", "item19", "item20"};

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

// Initialize recycler view mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
mRecyclerView.setLayoutManager(layoutManager);
adapter = new MyRecyclerAdapter(this, menus);
mRecyclerView.setAdapter(adapter);
}
}



Output :





Monday, 14 January 2013

Custom Adapter for Listview with Holder Pattern in android

Project Structure :



 

activity_main.xml


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

    <ListView
        android:id="@+id/contact_list_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>


list_item.xml


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

        <TextView
            android:id="@+id/name_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="31dp"
            android:layout_marginTop="10dp"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <ImageButton
            android:id="@+id/edit_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginTop="10dp"
            android:layout_marginRight="15dp"
            android:background="@android:color/transparent"
            android:src="@drawable/edit" />

    </RelativeLayout>

Contact.java


package com.rajeshvijayakumar.model;

public class Contact {

    private int id;
    private String name;
    private String phoneNumber;
    private String emailId;

    public Contact(int id, String name, String phoneNumber, String emailId) {
        this.id = id;
        this.name = name;
        this.phoneNumber = phoneNumber;
        this.emailId = emailId;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getEmailId() {
        return emailId;
    }

    public void setEmailId(String emailId) {
        this.emailId = emailId;
    }
}

ContactAdapter.java


package com.rajeshvijayakumar.adapter;

import java.util.List;

import android.content.Context;
import android.content.Intent;
import android.sax.StartElementListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

import com.rajeshvijayakumar.list.R;
import com.rajeshvijayakumar.list.TargetActivity;
import com.rajeshvijayakumar.model.Contact;

public class ContactAdapter extends ArrayAdapter<Contact> {

    private List<Contact> contactLst;
    private Context adapContext;

    public ContactAdapter(Context context, int textViewResourceId,
            List<Contact> contactLst) {
        super(context, textViewResourceId, contactLst);
        this.contactLst = contactLst;
        adapContext = context;
    }

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

        View view = convertView;
        ContactHolder contactHolder = null;

        if (convertView == null) {
            view = View.inflate(adapContext, R.layout.list_item, null);
           
            contactHolder = new ContactHolder();
            contactHolder.contactNameView = (TextView) view.findViewById(R.id.name_text_view);
            contactHolder.contactEditButton = (ImageButton) view.findViewById(R.id.edit_button);
           
            view.setTag(contactHolder);
        } else {
            contactHolder = (ContactHolder) view.getTag();
        }

        Contact contact = contactLst.get(position);
        final String name = contact.getName();
        contactHolder.contactNameView.setText(name);
        contactHolder.contactEditButton.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View v) {

                switch(v.getId()) {
                case R.id.edit_button :
                    Toast.makeText(adapContext, "You have Pressed Edit Button For " + name, Toast.LENGTH_LONG).show();
                    break;
                }
            }
        });
        return view;
    }

    static class ContactHolder {
        public TextView contactNameView;
        public ImageButton contactEditButton;
    }
}


MainActivity.java


package com.rajeshvijayakumar.list;

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

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

import com.rajeshvijayakumar.adapter.ContactAdapter;
import com.rajeshvijayakumar.model.Contact;

public class MainActivity extends Activity {

    private ListView mContactListView;
    private List<Contact> mContactList;
    private ContactAdapter mContactAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        mContactListView = (ListView) findViewById(R.id.contact_list_view);
        mContactList = getContacts();
        mContactAdapter = new ContactAdapter(MainActivity.this, R.layout.list_item, mContactList);
        mContactListView.setAdapter(mContactAdapter);

    }

    private List<Contact> getContacts() {

        List<Contact> contactData = new ArrayList<Contact>();
        contactData.add(new Contact(1, "Aakash", "1111111111", null));
        contactData.add(new Contact(2, "Akshay", "2222222222", null));
        contactData.add(new Contact(3, "Ashwin", "3333333333", null));
        contactData.add(new Contact(4, "Mahesh", "4444444444", null));
        contactData.add(new Contact(5, "Mrithula", "5555555555", null));
        contactData.add(new Contact(6, "Rajesh", "6666666666", null));
        contactData.add(new Contact(7, "Sonika", "7777777777", null));
        return contactData;
    }
}


In AndroidMainfest.xml


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.rajeshvijayakumar.list"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>




Source Code : Download this example Here