INTRODUCTION
Setelah memahami Recyclerview/Cardview dan Toolbar di posting kemarin, selanjutnya kita akan memasukan gambar ke Cardview.Tutor ini lanjutan dari Cardview with Toolbar, jadi ikuti dulu tutorialnya dari awal di postingan sebelumnya.Untuk memasukan gambar ke item cardview perlu menambah beberapa code ke xml dan adapter.
ok, langsung saja..
EXAMPLE CARDVIEW WITH IMAGE
- Download bahan untuk iconnya disini, extract, masukkan ke folder res/drawable-hdpi
- Buka item_recycle.xml, perhatikan tambahan codenya atau ganti saja semua isinya dengan ini:
- Buka arrays.xml, tambahkan ini di bagian bawah sebelum code
</resources> - Buka ItemController.java, perhatikan tambahan codenya :
- Buka MyRecyclerAdapter.java, perhatikan juga tambahannya:
- Hasilnya:
- Selesai..
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:id="@+id/cardlist_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="@dimen/cardview_default_elevation"
android:foreground="?android:attr/selectableItemBackground"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp">
<RelativeLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<ImageView
android:id="@+id/icon_item"
android:layout_width="60dp"
android:layout_height="60dp"
android:padding="4dp"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher" />
<LinearLayout
android:layout_width="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:gravity="center_vertical"
android:layout_height="?attr/listPreferredItemHeight"
android:orientation="vertical"
android:layout_toEndOf="@id/icon_item">
<TextView
android:id="@+id/listitem_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Android version name"
android:textColor="@color/primary_text_default_material_light"
android:textSize="@dimen/abc_text_size_subhead_material" />
<TextView
android:id="@+id/listitem_subname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Test"
android:paddingTop="3dp"
android:textColor="@color/secondary_text_default_material_light"
android:textSize="@dimen/abc_text_size_caption_material" />
</LinearLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
<string-array name="list_icon">
<item>a</item>
<item>b</item>
<item>c</item>
<item>d</item>
<item>e</item>
<item>f</item>
<item>g</item>
<item>h</item>
<item>i</item>
<item>j</item>
<item>k</item>
<item>l</item>
<item>m</item>
</string-array>
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
/**
* Created by AbangAzmi on 11/14/2015.
*/
public class ItemController extends RecyclerView.ViewHolder implements View.OnClickListener {
//Variable
CardView cardItemLayout;
ImageView icon; // Picture
TextView title;
TextView subTitle;
public ItemController(View itemView) {
super(itemView);
//Set id
cardItemLayout = (CardView) itemView.findViewById(R.id.cardlist_item);
//Tambahan untuk id Picture
icon = (ImageView)itemView.findViewById(R.id.icon_item);
//id Text
title = (TextView) itemView.findViewById(R.id.listitem_name);
subTitle = (TextView) itemView.findViewById(R.id.listitem_subname);
//onClick
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//tampilkan toas ketika click
Toast.makeText(v.getContext(),
String.format("Position %d", getAdapterPosition()),
Toast.LENGTH_SHORT).show();
}
}
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
/**
* Created by AbangAzmi on 11/14/2015.
*/
public class MyRecyclerAdapter extends RecyclerView.Adapter<ItemController> {
Context context;
List<String> versionModels;
//Array tambahan untuk picture
public static List<String> ic = new ArrayList<String>();
//Text
public static List<String> titleOs = new ArrayList<String>();
public static List<String> osSubList = new ArrayList<String>();
//Set List Items
public void setCardList(Context context) {
//Ambil nama picture dari array list_icon
String[] icon = context.getResources().getStringArray(R.array.list_icon);
//text
String[] listArray = context.getResources().getStringArray(R.array.os_version);
String[] subTitleArray = context.getResources().getStringArray(R.array.os_sub_version);
for (int i = 0; i < listArray.length; ++i) {
ic.add(icon[i]);
titleOs.add(listArray[i]);
osSubList.add(subTitleArray[i]);
}
}
public MyRecyclerAdapter(Context context) {
this.context = context;
setCardList(context);
}
public MyRecyclerAdapter(List<String> versionModels) {
this.versionModels = versionModels;
}
@Override
public ItemController onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_recycle, viewGroup, false);
ItemController viewHolder = new ItemController(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ItemController versionViewHolder, int i) {
//Cari Picture di drawable sesuai nama dari array
//lalu menyusunnya sesuai urutan dari atas ke bawah
int listIcon = context.getResources().getIdentifier(String.valueOf(ic.get(i)),
"drawable", context.getPackageName());
versionViewHolder.icon.setImageResource(listIcon);
versionViewHolder.title.setText(titleOs.get(i));
versionViewHolder.subTitle.setText(osSubList.get(i));
}
@Override
public int getItemCount() {
return titleOs == null ? 0 : titleOs.size();
}
}
Semoga bermanfaat...





















































