Friday, October 22, 2021

Recycler View item Click event

1. Define in adapter with inter face


public class programmingAdapter extends RecyclerView.Adapter<programmingAdapter.programmingViewHolder> {

String[] data;
iItemClickListnerRK iItemClickListnerRk;

public programmingAdapter(String[] data, iItemClickListnerRK iItemClickListnerRk) {
this.data = data;
this.iItemClickListnerRk = iItemClickListnerRk;
}

@Override
public programmingViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.list_item_layout, parent, false);
return new programmingViewHolder(view);
}

@Override
public void onBindViewHolder(programmingViewHolder holder, int position) {
String title = data[position];
holder.txtTitle.setText(title);

holder.itemView.setOnClickListener(view -> {
iItemClickListnerRk.onClickItemListnerRK(title, position);//this will get current index of item in recyclerView
});
}

@Override
public int getItemCount() {
return data.length;
}

public interface iItemClickListnerRK {
void onClickItemListnerRK(String itemNameRK, int idx);
}


public class programmingViewHolder extends RecyclerView.ViewHolder {
ImageView imgIcon;
TextView txtTitle;

public programmingViewHolder(View itemView) {
super(itemView);
imgIcon = itemView.findViewById(R.id.imgIcon);
txtTitle = itemView.findViewById(R.id.txtTitle);
}
}


}


2. Apply in MainActivity

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

RecyclerView recyclerView=findViewById(R.id.programmingListRK);
recyclerView.setLayoutManager(new LinearLayoutManager(this));

String[] lng={"Java","C Sharp","C plus plus","Dot net","PHP","Python","C Sharp","C plus plus","Dot net","PHP","Python","C Sharp","C plus plus","Dot net","PHP","Python"};

programmingAdapter adapter = new programmingAdapter(lng, new programmingAdapter.iItemClickListnerRK() {
@Override
public void onClickItemListnerRK(String itemNameRK, int idx) {
Toast.makeText(MainActivity.this, "Clicked => P:"+idx+", item:"+itemNameRK, Toast.LENGTH_SHORT).show();
}
});

recyclerView.setAdapter(adapter);

}
}

3. xml main

<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/programmingListRK"
    tools:context=".MainActivity">


</androidx.recyclerview.widget.RecyclerView>

4. xml list view for recycler

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imgIcon"
        android:src="@mipmap/ic_launcher"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:id="@+id/txtTitle"
        android:textSize="24sp"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:layout_marginLeft="16dp"/>

</LinearLayout>

No comments:

Post a Comment

Date format in android

public String f_dateFormat (String cdate , String dateToFormat) { // String cdate = "2013-05-15T10:00:00-0700"; ...