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