Custom ListView ile kolayca yapabilirsiniz.
Öncelikle şu konuyu bir inceleyin.Ben örnek göstererek size favori kısmın dan biraz bahesedeyim.
Ayrı bir layout oluşturuyoruz bu bizim list viewmizda görünecek olan layout ayrı bir tasarım yapıyoruz kısacası
örnek : (list_fav.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="yazi"
android:id="@+id/isimText"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:src="@drawable/abc_btn_rating_star_on_mtrl_alpha"
android:background="#242424" />
</RelativeLayout>
listView imizi da Mainclasımızda tanımlıyoruz.Ben elemanlarımı arraylist ile ekledim.
Main.java
package com.example.barankaraboa.listfavoriteapp;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageButton;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ListView list ;
customListAdapter adapter ;
ImageButton btn ;
ArrayList<String> liste = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView) findViewById(R.id.listView);
liste.add("baran");
liste.add("asdjasd");
adapter = new customListAdapter(this,liste);
list.setAdapter(adapter);
btn = (ImageButton) findViewById(R.id.imageButton);
}
}
Burasını geçtikten sonra asıl önemli olan custom adapter kısmı. Bunu yapabilmek için BaseAdapter sınıfını iyi bilmemiz gerekiyor.Bu sınıfımızda list_fav.xml'de eklediğimiz komponentleri kullanıcaz.
Bir yapılandırıcı oluşturuyorum degerlerimi yapılandırıcı üzerinden gönderiyorum bu sayede eleman gönderirken sürekli nesne oluşturma gibi bir derdimiz olmuyor.
costumListAdapter.java
package com.example.barankaraboa.listfavoriteapp;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by Baran on 5.04.2016.
*/
public class customListAdapter extends BaseAdapter {
private int position;
ImageButton favButon ;
Context context ;
MainActivity favList= new MainActivity();
LayoutInflater inflater;
Activity activity;
customListAdapter()
{
}
customListAdapter(Context context,ArrayList isimler) {
this.context = context;
this.favList.liste = isimler;
}
@Override
public int getCount() {
return favList.liste.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
this.position = position;
TextView isimler;
ImageButton favButon;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.list_fav,parent,false);
isimler = (TextView)itemView.findViewById(R.id.isimText);
return itemView;
}
}