- dependencies
- activity_main.xml
- values/dimens.xml
- layout/list_item.xml
- drawable/border.xml
- MyListData.java
- MyListAdapter.java
- MainActivity.java
dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.recyclerview:recyclerview:1.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' }
<?xml version="1.0" encoding="utf-8"?> <androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" android:id="@+id/recyclerView" tools:context="com.example.rvpth.MainActivity"> </androidx.recyclerview.widget.RecyclerView>
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen> <dimen name="ic_clear_margin">56dp</dimen> </resources>
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativeLayout" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeightLarge" android:background="@drawable/border"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_marginStart="@dimen/activity_horizontal_margin" android:layout_marginEnd="@dimen/activity_horizontal_margin" android:contentDescription="Icon" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_toEndOf="@id/imageView" android:layout_toRightOf="@id/imageView" android:gravity="center_vertical" android:textSize="16sp"/> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#FFFFFF" /> <stroke android:width="1dp" android:color="#CCCCCC" /> </shape>
public class MyListData{ private String description; private int imgId; public MyListData(String description, int imgId) { this.description = description; this.imgId = imgId; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public int getImgId() { return imgId; } public void setImgId(int imgId) { this.imgId = imgId; } }
public class MyListAdapter extends RecyclerView.Adapter<MyListAdapter.ViewHolder>{ private MyListData[] listdata; public MyListAdapter(List<MyListData> listdata) { this.listdata = listdata.toArray(new MyListData[0]); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); View listItem= layoutInflater.inflate(R.layout.list_item, parent, false); ViewHolder viewHolder = new ViewHolder(listItem); return viewHolder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { final MyListData myListData = listdata[position]; holder.textView.setText(listdata[position].getDescription()); holder.imageView.setImageResource(listdata[position].getImgId()); holder.relativeLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(view.getContext(),"click on item: "+myListData.getDescription(),Toast.LENGTH_LONG).show(); } }); } @Override public int getItemCount() { return listdata.length; } public static class ViewHolder extends RecyclerView.ViewHolder { public ImageView imageView; public TextView textView; public RelativeLayout relativeLayout; public ViewHolder(View itemView) { super(itemView); this.imageView = (ImageView) itemView.findViewById(R.id.imageView); this.textView = (TextView) itemView.findViewById(R.id.textView); relativeLayout = (RelativeLayout)itemView.findViewById(R.id.relativeLayout); } } }
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final List<MyListData> myListData = new ArrayList<MyListData>(); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); myListData.add(new MyListData("Email", android.R.drawable.ic_dialog_email)); myListData.add(new MyListData("Info", android.R.drawable.ic_dialog_info)); myListData.add(new MyListData("Delete", android.R.drawable.ic_delete)); myListData.add(new MyListData("Dialer", android.R.drawable.ic_dialog_dialer)); myListData.add(new MyListData("Alert", android.R.drawable.ic_dialog_alert)); myListData.add(new MyListData("Map", android.R.drawable.ic_dialog_map)); final MyListAdapter adapter = new MyListAdapter(myListData); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(adapter); } }