From 0a5484dd6c96573636cc8e2e31aa333d2ef5e611 Mon Sep 17 00:00:00 2001
From: shembull <46959681+shembull@users.noreply.github.com>
Date: Sun, 19 Jan 2020 11:58:57 +0100
Subject: [PATCH] implenented left and right layout
---
.idea/codeStyles/Project.xml | 1 -
.idea/gradle.xml | 12 +++--
.idea/jarRepositories.xml | 25 +++++++++
.idea/misc.xml | 5 +-
.../example/recyclerview/MainActivity.java | 26 ++++++++-
.../com/example/recyclerview/MyAdapter.java | 53 ++++++++++++++-----
...yViewHolder.java => MyViewHolderLeft.java} | 8 +--
.../recyclerview/MyViewHolderRight.java | 15 ++++++
...age_layout.xml => message_layout_left.xml} | 8 ++-
.../main/res/layout/message_layout_right.xml | 30 +++++++++++
build.gradle | 2 +-
gradle/wrapper/gradle-wrapper.properties | 4 +-
12 files changed, 160 insertions(+), 29 deletions(-)
create mode 100644 .idea/jarRepositories.xml
rename app/src/main/java/com/example/recyclerview/{MyViewHolder.java => MyViewHolderLeft.java} (52%)
create mode 100644 app/src/main/java/com/example/recyclerview/MyViewHolderRight.java
rename app/src/main/res/layout/{message_layout.xml => message_layout_left.xml} (74%)
create mode 100644 app/src/main/res/layout/message_layout_right.xml
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 681f41a..264b222 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -94,7 +94,6 @@
http://schemas.android.com/apk/res/android
- ANDROID_ATTRIBUTE_ORDER
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index d291b3d..5cd135a 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,15 +1,19 @@
+
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..a5f05cd
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 37a7509..9442b9c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,8 +1,9 @@
-
-
+
+
+
diff --git a/app/src/main/java/com/example/recyclerview/MainActivity.java b/app/src/main/java/com/example/recyclerview/MainActivity.java
index 6692d53..ae9bb68 100644
--- a/app/src/main/java/com/example/recyclerview/MainActivity.java
+++ b/app/src/main/java/com/example/recyclerview/MainActivity.java
@@ -5,13 +5,16 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
+import android.os.Handler;
import java.util.ArrayList;
import java.util.Date;
-public class MainActivity extends AppCompatActivity {
+public class MainActivity extends AppCompatActivity implements Runnable {
ArrayList mData;
+ Handler mHandler;
+ MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -21,10 +24,29 @@ public class MainActivity extends AppCompatActivity {
mData.add(new Message("Joel", "Eine super Nachricht", new Date()));
mData.add(new Message("Max", "Eine Nachricht", new Date()));
- MyAdapter myAdapter = new MyAdapter(mData);
+ myAdapter = new MyAdapter(mData);
RecyclerView mRecyclerView = findViewById(R.id.recyclerView);
LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLinearLayoutManager);
mRecyclerView.setAdapter(myAdapter);
+ mHandler = new Handler();
+ mHandler.postDelayed(this, 1000);
+ }
+
+ @Override
+ public void run() {
+ int randNr = (int) Math.floor(Math.random() * 3);
+ switch (randNr){
+ case 0:
+ mData.add(new Message("Niklas", "Eine super duper Nachricht", new Date()));
+ break;
+ case 1:
+ mData.add(new Message("Joel", "Eine super Nachricht", new Date()));
+ break;
+ case 2:
+ mData.add(new Message("Max", "Eine Nachricht", new Date()));
+ }
+ myAdapter.notifyDataSetChanged();
+ mHandler.postDelayed(this, 1000);
}
}
diff --git a/app/src/main/java/com/example/recyclerview/MyAdapter.java b/app/src/main/java/com/example/recyclerview/MyAdapter.java
index cf55e99..3b3ef26 100644
--- a/app/src/main/java/com/example/recyclerview/MyAdapter.java
+++ b/app/src/main/java/com/example/recyclerview/MyAdapter.java
@@ -1,5 +1,6 @@
package com.example.recyclerview;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -10,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
-public class MyAdapter extends RecyclerView.Adapter {
+public class MyAdapter extends RecyclerView.Adapter {
ArrayList mData;
@@ -18,23 +19,51 @@ public class MyAdapter extends RecyclerView.Adapter {
mData = aData;
}
+ @Override
+ public int getItemViewType(int position) {
+ return position % 2;
+ }
+
@NonNull
@Override
- public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
- View newView = inflater.inflate(R.layout.message_layout, parent, false);
- MyViewHolder myViewHolder = new MyViewHolder(newView);
- return myViewHolder;
+ switch (viewType) {
+ case 1:
+ View newViewRight = inflater.inflate(R.layout.message_layout_right, parent, false);
+ return new MyViewHolderRight(newViewRight);
+ case 0:
+ default:
+ View newViewLeft = inflater.inflate(R.layout.message_layout_left, parent, false);
+ return new MyViewHolderLeft(newViewLeft);
+ }
}
@Override
- public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
- TextView sender = holder.mTextView.findViewById(R.id.sender_tv);
- sender.setText(mData.get(position).sender);
- TextView text = holder.mTextView.findViewById(R.id.text_tv);
- text.setText(mData.get(position).text);
- TextView date = holder.mTextView.findViewById(R.id.date_tv);
- date.setText(mData.get(position).date.toString());
+ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
+ TextView sender;
+ TextView text;
+ TextView date;
+ switch (holder.getItemViewType()) {
+ case 1:
+ MyViewHolderRight viewHolderRight = (MyViewHolderRight) holder;
+ sender = viewHolderRight.mLinearLayout.findViewById(R.id.sender_tv);
+ text = viewHolderRight.mLinearLayout.findViewById(R.id.text_tv);
+ date = viewHolderRight.mLinearLayout.findViewById(R.id.date_tv);
+ sender.setText(mData.get(position).sender);
+ text.setText(mData.get(position).text);
+ date.setText(mData.get(position).date.toString());
+ break;
+ case 0:
+ default:
+ MyViewHolderLeft viewHolderLeft = (MyViewHolderLeft) holder;
+ sender = viewHolderLeft.mLinearLayout.findViewById(R.id.sender_tv);
+ text = viewHolderLeft.mLinearLayout.findViewById(R.id.text_tv);
+ date = viewHolderLeft.mLinearLayout.findViewById(R.id.date_tv);
+ sender.setText(mData.get(position).sender);
+ text.setText(mData.get(position).text);
+ date.setText(mData.get(position).date.toString());
+ }
}
@Override
diff --git a/app/src/main/java/com/example/recyclerview/MyViewHolder.java b/app/src/main/java/com/example/recyclerview/MyViewHolderLeft.java
similarity index 52%
rename from app/src/main/java/com/example/recyclerview/MyViewHolder.java
rename to app/src/main/java/com/example/recyclerview/MyViewHolderLeft.java
index 9d9e1b4..0d0442a 100644
--- a/app/src/main/java/com/example/recyclerview/MyViewHolder.java
+++ b/app/src/main/java/com/example/recyclerview/MyViewHolderLeft.java
@@ -6,10 +6,10 @@ import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
-public class MyViewHolder extends RecyclerView.ViewHolder {
- LinearLayout mTextView;
- public MyViewHolder(@NonNull View itemView) {
+public class MyViewHolderLeft extends RecyclerView.ViewHolder {
+ LinearLayout mLinearLayout;
+ public MyViewHolderLeft(@NonNull View itemView) {
super(itemView);
- mTextView = (LinearLayout) itemView;
+ mLinearLayout = (LinearLayout) itemView;
}
}
diff --git a/app/src/main/java/com/example/recyclerview/MyViewHolderRight.java b/app/src/main/java/com/example/recyclerview/MyViewHolderRight.java
new file mode 100644
index 0000000..f6e2748
--- /dev/null
+++ b/app/src/main/java/com/example/recyclerview/MyViewHolderRight.java
@@ -0,0 +1,15 @@
+package com.example.recyclerview;
+
+import android.view.View;
+import android.widget.LinearLayout;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+public class MyViewHolderRight extends RecyclerView.ViewHolder {
+ LinearLayout mLinearLayout;
+ public MyViewHolderRight(@NonNull View itemView) {
+ super(itemView);
+ mLinearLayout = (LinearLayout) itemView;
+ }
+}
diff --git a/app/src/main/res/layout/message_layout.xml b/app/src/main/res/layout/message_layout_left.xml
similarity index 74%
rename from app/src/main/res/layout/message_layout.xml
rename to app/src/main/res/layout/message_layout_left.xml
index 23f8cf8..b6f9b6a 100644
--- a/app/src/main/res/layout/message_layout.xml
+++ b/app/src/main/res/layout/message_layout_left.xml
@@ -1,14 +1,20 @@
+ android:text="TextView"
+ android:textSize="18sp"
+ android:textStyle="bold"
+ android:typeface="normal" />
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index fb516be..42fadac 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.2'
+ classpath 'com.android.tools.build:gradle:4.0.0-alpha08'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index c4a644c..6ed35c2 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Jan 14 16:39:03 CET 2020
+#Sun Jan 19 10:43:18 CET 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-rc-1-all.zip