In the below example code I have Created a RecyclerView. In RecyclerView I have added CardView Item Alternatively like Chat app .
First Item is on left, second is on Right. In Adapter class I have used boolean type, variables(changeLayout).
You can see below example code it clearly describes Adding Card View Alternatively Within RecyclerView.
Step(1)-I have added first RecyclerView and CardView dependency to Grandle file -
compile 'com.android.support:recyclerview-v7:21.0.+'
compile 'com.android.support:cardview-v7:21.0.+'
Step(2)-activity_main.xml layout-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/backgraund">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="200dp"
android:scrollbars="vertical" />
</LinearLayout>
Step(3)-Created a row_left_text.xml layout-
<?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_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/card"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:layout_margin="1dp"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="@dimen/cardview_default_elevation"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="140dp"
android:id="@+id/main"
android:focusable="true"
android:background="@color/left"
android:clickable="true"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp">
<ImageView
android:id="@+id/ivicon"
android:src="@drawable/people"
android:paddingLeft="5dp"
android:layout_alignParentLeft="true"
android:layout_width="65dp"
android:layout_height="65dp"
android:paddingBottom="14dp"/>
<TextView
android:id="@+id/tvtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:textStyle="bold"
android:text="Arvind KUMAR"
android:paddingTop="4dp"
android:layout_centerHorizontal="true"
android:textColor="@color/colorAccent"
android:layout_toRightOf="@+id/ivicon"
android:paddingRight="5dp"
android:textSize="18dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvhour"
android:layout_toRightOf="@+id/ivicon"
android:text="2 hour ago"
android:layout_below="@id/tvtitle" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textColor="#352e2e"
android:textSize="17dp"
android:id="@+id/comment_text"
android:text="Like most of our kind we are custom software system company."
android:layout_below="@+id/tvhour" />
</RelativeLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
Step(4)- Created a row_right_text.xml layout-
<?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_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/card"
android:layout_margin="1dp"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="@dimen/cardview_default_elevation"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="140dp"
android:id="@+id/main"
android:focusable="true"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:background="@color/right"
android:clickable="true"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp">
<ImageView
android:id="@+id/ivicon"
android:src="@drawable/people"
android:paddingLeft="5dp"
android:layout_alignParentRight="true"
android:layout_width="65dp"
android:layout_height="65dp"
android:paddingBottom="14dp"/>
<TextView
android:id="@+id/tvtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:textStyle="bold"
android:text="Arvind KUMAR"
android:paddingTop="4dp"
android:layout_centerHorizontal="true"
android:textColor="@color/colorAccent"
android:layout_toLeftOf="@+id/ivicon"
android:paddingLeft="5dp"
android:textSize="18dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvhour"
android:layout_toLeftOf="@+id/ivicon"
android:text="2 hour ago"
android:layout_below="@id/tvtitle"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textColor="#4e4a4a"
android:textSize="17dp"
android:id="@+id/comment_text"
android:text="Like most of our kind we are custom software system company."
android:layout_below="@+id/tvhour" />
</RelativeLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
Step(5)-Created a new class Recycler_text_data-
public class Recycler_text_data {
private int imageId;
private String title;
private String comments;
private String hour;
public int getImageId(){return imageId;
}
public void setImageId(int imageId){
this.imageId=imageId;
}
public String getTitle(){return title;}
public void setTitle(String title){
this.title=title;
}
public String getHour(){return hour;}
public void setHour(String hour){
this.hour=hour;
}
public String getComments(){return comments;}
public void setComments(String comments){
this.comments=comments;
}
}
Step(6)-Created a new class Recycler_Text_comment_Adapter -
public class Recycler_Text_comment_Adapter extends RecyclerView.Adapter<Recycler_Text_comment_Adapter.MyViewHolder> {
Context context;
boolean changeLayout=true;
private List<Recycler_text_data> data2;
public Recycler_Text_comment_Adapter(Context context, List<Recycler_text_data> data2){
this.data2 = data2;
this.context=context;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public ImageView imageView;
public TextView txtTitle;
public TextView txtHour;
public TextView txtComment;
private LinearLayout main;
public MyViewHolder(final View parent) {
super(parent);
txtTitle = (TextView) parent.findViewById(R.id.tvtitle);
txtHour = (TextView) parent.findViewById(R.id.tvhour);
txtComment=(TextView)parent.findViewById(R.id.comment_text);
imageView=(ImageView)parent.findViewById(R.id.ivicon);
main = (LinearLayout) parent.findViewById(R.id.main);
main.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(itemView.getContext(), "Position:" + Integer.toString(getPosition()), Toast.LENGTH_SHORT).show();
}
});
}
}
@Override
public Recycler_Text_comment_Adapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView;
System.out.println("view type"+ viewType);
if(changeLayout) {
itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_left_text, parent, false);
changeLayout= !changeLayout;
}
else {
itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_right_text, parent, false);
changeLayout= !changeLayout;
}
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Recycler_text_data row = data2.get(position);
holder.txtTitle.setText(row.getTitle());
holder.txtHour.setText(row.getHour());
holder.txtComment.setText(row.getComments());
holder.imageView.setImageResource(row.getImageId());
}
@Override
public int getItemCount() {
return data2.size();
}
}
Step(7)MainActivity-
public class MainActivity extends AppCompatActivity {
public static final String[] title = new String[]{"Inder tiwari :", "Raj :"};
public static final String[] hour = new String[]{"22 Feb at 06:00 PM", "24 Feb at 06:00 PM"};
public static final String[] comments = new String[]{"We are a team of 275+ technology evangelists, simply in love with the town we are headquartered in. This town has scenic beauty, talented pool of professionals, awesome weather... ", "We are a team of 275+ technology evangelists, simply in love with the town we are headquartered in. This town has scenic beauty, talented pool of professionals, awesome weather... "};
public static final Integer[] images = {R.drawable.people, R.drawable.people};
public List<Recycler_text_data> data2 = new ArrayList<>();
private RecyclerView recyclerView;
private Recycler_Text_comment_Adapter recyclerTextCommentAdapter;
private LinearLayout main;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
data2 = new ArrayList<Recycler_text_data>();
for (int i = 0; i < title.length; i++) {
Recycler_text_data data = new Recycler_text_data();
data.setImageId(images[i]);
data.setTitle(title[i]);
data.setHour(hour[i]);
data.setComments(comments[i]);
data2.add(data);
}
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
Recycler_Text_comment_Adapter recyclerTextCommentAdapter = new Recycler_Text_comment_Adapter(getApplicationContext(), data2);
recyclerView.setAdapter(recyclerTextCommentAdapter);
}
}
0 Comment(s)