CardView, RecyclerVierw listaelem-adapterbe oltva

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="6dp"
    tools:context="xakk.domel.hun.vijevhoder.MainActivity">
    <TextView
        android:text="próba"
        android:background="#AA887F"
        android:layout_width="90dp"
        android:layout_height="50dp"
        android:id="@+id/infoline2"
        android:layout_alignParentEnd="true"
        android:gravity="center"
        android:ellipsize="start"
        android:textSize="18sp" />
    <android.support.v7.widget.RecyclerView
        android:layout_alignParentTop="true"
        android:layout_marginTop="50dp"
        android:id="@+id/recyclerview"
        android:layout_below="@id/infoline2"
        android:layout_height="match_parent"
        android:layout_width="match_parent"/>
</RelativeLayout>

cardview.xml

Lesz ott egy @drawable/pin3 amit hiányolni fog, oda rakj be egy képet

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    card_view:cardCornerRadius="5dp"
    card_view:cardBackgroundColor="#ff4455"
    card_view:cardElevation="6dp"
    android:id="@+id/cardid"
    android:layout_margin="10dp">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        >
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="72dp"
            android:layout_height="72dp"
            android:padding="10dp"
            android:src="@drawable/pin3"
            android:layout_centerVertical="true"
             />
        <Button
            android:layout_width="50dp"
            android:layout_height="30dp"
            android:text="-->"
            android:padding="0dp"
            android:layout_marginRight="1dp"
            android:id="@+id/butt1"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"

            />
        <TextView
            android:id="@+id/texx1"
            android:text="egykettő"
            android:textColor="#000000"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toEndOf="@+id/imageView1"
            android:layout_marginTop="15dp"
            android:layout_marginLeft="10dp"
            />
    </RelativeLayout>

</android.support.v7.widget.CardView>

MainActivity.java

package xakk.domel.hun.vijevhoder;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements Osszekoto{
    RecyclerViewAdapter adapter;
    ArrayList<String> myValues = new ArrayList<String>();
    LinearLayoutManager llm; RecyclerView myView;
    Context con;

    @Override
    public void callback(Integer position, View view) {
        Log.i("TAG",":"+position);  //Button lenyomása ide jön le
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        con=this;
        adapter = new RecyclerViewAdapter(myValues, this, this);
        myView =  (RecyclerView)findViewById(R.id.recyclerview);
        myView.setHasFixedSize(true);
        myView.setAdapter(adapter);
        llm = new LinearLayoutManager(this);
        llm.setOrientation(LinearLayoutManager.VERTICAL);
        myView.setLayoutManager(llm);
        myValues.clear();
        myValues.add("egy");
        myValues.add("kettő");
        myValues.add("három");
        myValues.add("négy");
        myValues.add("öt");
        myValues.add("hat");
        myValues.add("hét");
        myValues.add("nyolc");
        myValues.add("kilenc");
        myValues.add("tíz");
        adapter.notifyDataSetChanged();
    }
}

RecyclerViewAdapter.java

package xakk.domel.hun.vijevhoder;

import android.content.Context;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.location.Location;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;


public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
    ArrayList<String> myValues;
    Osszekoto ml;
    Context con;

    public RecyclerViewAdapter(ArrayList<String> myValuesi,  Context mcon, Osszekoto mlo){
        this.myValues= myValuesi;
        con=mcon;
        ml = mlo;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View listItem = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, parent, false);
        return new MyViewHolder(listItem);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, final int position) {
        //holder.myButton.setId(position);
        holder.myButton.setText("-->");
                holder.myButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        ml.callback(position, view);
                    }
                });

        holder.myCardView.setCardBackgroundColor(Color.YELLOW);
        holder.myButton.getBackground().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY);
        holder.myButton.setTextColor(Color.BLACK);
        holder.myImageView.setImageDrawable(con.getResources().getDrawable(R.drawable.pin3,null));
        holder.myTextView1.setText("tex: "+myValues.get(position));
    }

    @Override
    public int getItemCount() {
        return myValues.size();
    }
    public static class MyViewHolder extends RecyclerView.ViewHolder {
        private Button myButton;
        private TextView myTextView1;
        private CardView myCardView;
        private ImageView myImageView;
        public MyViewHolder(View semmi) {
            super(semmi);
            myButton        = (Button)      itemView.findViewById(R.id.butt1);
            myTextView1     = (TextView)    itemView.findViewById(R.id.texx1);
            myCardView      = (CardView)    itemView.findViewById(R.id.cardid);
            myImageView     = (ImageView)   itemView.findViewById(R.id.imageView1);
        }
    }
}

Osszekoto.java

package xakk.domel.hun.vijevhoder;

import android.view.View;

public interface Osszekoto {
    void callback(Integer position, View view);
}

Nemigazán fekszik nekem ez a ListView és RecyclerView logika, az adapterben nem jöttem rá, hogy a button onClick eseményt hogyan lehetne átvinni a MainActivity-be, ezért egy interface-t iktattam be a kettő közé mint Osszekoto.java, amit implementáltam a MainActivity.java osztályban, ott pedig egy Log.i().. fogja kiírni, hogy hányas számú Buttont nyomtad le