From 08495195e0bd98742096efe5ef08f845f24af283 Mon Sep 17 00:00:00 2001 From: weedrice Date: Sun, 20 Jan 2019 18:27:00 +0900 Subject: [PATCH 1/3] =?UTF-8?q?Recycler=20View=20=EB=82=B4=EC=9D=98=20?= =?UTF-8?q?=EA=B0=81=20Item=EC=9D=B4=20=EA=B8=B8=EA=B2=8C=20=EB=88=8C?= =?UTF-8?q?=EB=A0=B8=EC=9D=84=20=EB=95=8C=20AlertDialog=EB=A5=BC=20?= =?UTF-8?q?=EC=9D=B4=EC=9A=A9=ED=95=B4=20=EC=83=88=EB=A1=9C=EC=9A=B4=20?= =?UTF-8?q?=EC=9B=B9=20=EB=B7=B0=EB=A5=BC=20=ED=8C=9D=EC=97=85=20=ED=98=95?= =?UTF-8?q?=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=EB=B3=B4=EC=97=AC=EC=A4=8D?= =?UTF-8?q?=EB=8B=88=EB=8B=A4.=20iOS=EC=97=90=EC=84=9C=203D=ED=84=B0?= =?UTF-8?q?=EC=B9=98=EB=A5=BC=20=EC=9D=B4=EC=9A=A9=ED=95=9C=20=ED=8C=9D?= =?UTF-8?q?=EC=97=85=20=EC=9B=B9=ED=8E=98=EC=9D=B4=EC=A7=80=20=ED=91=9C?= =?UTF-8?q?=ED=98=84=EC=97=90=EC=84=9C=20=EC=95=84=EC=9D=B4=EB=94=94?= =?UTF-8?q?=EC=96=B4=EB=A5=BC=20=EC=96=BB=EC=97=88=EC=8A=B5=EB=8B=88?= =?UTF-8?q?=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yeseul/movieapp/view/BaseActivity.java | 24 ++++++++++++++++++- .../view/adapter/AdapterContract.java | 4 +++- .../view/adapter/BaseRecyclerAdapter.java | 17 +++++++++++++ .../view/adapter/OnItemLongClickListener.java | 6 +++++ .../movieapp/view/main/MainActivity.java | 9 +++++++ .../movieapp/view/main/MainContract.java | 2 ++ .../movieapp/view/main/MainPresenter.java | 4 ++++ 7 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/example/yeseul/movieapp/view/adapter/OnItemLongClickListener.java diff --git a/app/src/main/java/com/example/yeseul/movieapp/view/BaseActivity.java b/app/src/main/java/com/example/yeseul/movieapp/view/BaseActivity.java index 31e044b..1a0eb1f 100644 --- a/app/src/main/java/com/example/yeseul/movieapp/view/BaseActivity.java +++ b/app/src/main/java/com/example/yeseul/movieapp/view/BaseActivity.java @@ -1,12 +1,14 @@ package com.example.yeseul.movieapp.view; +import android.content.DialogInterface; import android.content.pm.ActivityInfo; import android.databinding.DataBindingUtil; import android.databinding.ViewDataBinding; import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; +import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; +import android.webkit.WebView; import android.widget.Toast; public abstract class BaseActivity extends AppCompatActivity { @@ -30,6 +32,26 @@ public void makeToast(String text){ Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } + public void showDialog(String linkUrl) { + WebView webView = new WebView(this); + webView.setScrollbarFadingEnabled(false); + webView.getSettings().setJavaScriptEnabled(true); + webView.getSettings().setUserAgentString("AndroidWebView"); + webView.clearCache(true); + webView.loadUrl(linkUrl); + + AlertDialog.Builder dialog = new AlertDialog.Builder(this); + dialog.setView(webView); + dialog.setCancelable(false); + dialog.setNegativeButton("닫기", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + dialogInterface.cancel(); + } + }); + dialog.show(); + } + protected abstract int getLayoutId(); protected abstract P getPresenter(); } \ No newline at end of file diff --git a/app/src/main/java/com/example/yeseul/movieapp/view/adapter/AdapterContract.java b/app/src/main/java/com/example/yeseul/movieapp/view/adapter/AdapterContract.java index b06cd18..1d58962 100644 --- a/app/src/main/java/com/example/yeseul/movieapp/view/adapter/AdapterContract.java +++ b/app/src/main/java/com/example/yeseul/movieapp/view/adapter/AdapterContract.java @@ -1,11 +1,13 @@ package com.example.yeseul.movieapp.view.adapter; +import android.widget.AdapterView; + import java.util.List; public interface AdapterContract { interface View { - + void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener); void setOnItemClickListener(OnItemClickListener itemClickListener); } diff --git a/app/src/main/java/com/example/yeseul/movieapp/view/adapter/BaseRecyclerAdapter.java b/app/src/main/java/com/example/yeseul/movieapp/view/adapter/BaseRecyclerAdapter.java index b715222..2c5eb81 100644 --- a/app/src/main/java/com/example/yeseul/movieapp/view/adapter/BaseRecyclerAdapter.java +++ b/app/src/main/java/com/example/yeseul/movieapp/view/adapter/BaseRecyclerAdapter.java @@ -3,6 +3,9 @@ import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; import java.util.ArrayList; import java.util.List; @@ -11,6 +14,7 @@ public abstract class BaseRecyclerAdapter protected List itemList; protected OnItemClickListener onItemClickListener; + protected OnItemLongClickListener onItemLongClickListener; protected Context context; public BaseRecyclerAdapter(Context context){ @@ -26,6 +30,11 @@ public Context getContext(){ return context; } + @Override + public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) { + this.onItemLongClickListener = onItemLongClickListener; + } + @Override public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; @@ -193,6 +202,14 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int }); + holder.itemView.setOnLongClickListener( view -> { + if(onItemLongClickListener != null) { + Log.d("log", "long touch"); + onItemLongClickListener.onItemLongClick(position); + } + return true; + }); + onBindView((H) holder, position); } diff --git a/app/src/main/java/com/example/yeseul/movieapp/view/adapter/OnItemLongClickListener.java b/app/src/main/java/com/example/yeseul/movieapp/view/adapter/OnItemLongClickListener.java new file mode 100644 index 0000000..19765c2 --- /dev/null +++ b/app/src/main/java/com/example/yeseul/movieapp/view/adapter/OnItemLongClickListener.java @@ -0,0 +1,6 @@ +package com.example.yeseul.movieapp.view.adapter; + +public interface OnItemLongClickListener { + + void onItemLongClick(int position); +} diff --git a/app/src/main/java/com/example/yeseul/movieapp/view/main/MainActivity.java b/app/src/main/java/com/example/yeseul/movieapp/view/main/MainActivity.java index 574b81f..c9cef21 100644 --- a/app/src/main/java/com/example/yeseul/movieapp/view/main/MainActivity.java +++ b/app/src/main/java/com/example/yeseul/movieapp/view/main/MainActivity.java @@ -14,9 +14,11 @@ import com.example.yeseul.movieapp.R; import com.example.yeseul.movieapp.data.source.movie.MovieRepository; import com.example.yeseul.movieapp.databinding.ActivityMovieBinding; +import com.example.yeseul.movieapp.pojo.Movie; import com.example.yeseul.movieapp.utils.KeyboardUtil; import com.example.yeseul.movieapp.view.BaseActivity; + public class MainActivity extends BaseActivity implements MainContract.View { private MovieListAdapter adapter; @@ -118,4 +120,11 @@ public void startMovieDetailPage(String linkUrl) { customTabsIntent.launchUrl(this, Uri.parse(linkUrl)); } + + /** + * 현재 창 안에 Dialog를 이용한 웹 사이트 출력 */ + @Override + public void startSimpleView(String linkUrl, String movieTitle) { + showDialog(linkUrl); + } } diff --git a/app/src/main/java/com/example/yeseul/movieapp/view/main/MainContract.java b/app/src/main/java/com/example/yeseul/movieapp/view/main/MainContract.java index ac42353..a4d32f7 100644 --- a/app/src/main/java/com/example/yeseul/movieapp/view/main/MainContract.java +++ b/app/src/main/java/com/example/yeseul/movieapp/view/main/MainContract.java @@ -12,6 +12,8 @@ interface View extends BaseView { void onSearchResultEmpty(String searchKey); void startMovieDetailPage(String linkUrl); + + void startSimpleView(String linkUrl, String movieTitle); } interface Presenter extends BasePresenter { diff --git a/app/src/main/java/com/example/yeseul/movieapp/view/main/MainPresenter.java b/app/src/main/java/com/example/yeseul/movieapp/view/main/MainPresenter.java index b57c015..1eb241e 100644 --- a/app/src/main/java/com/example/yeseul/movieapp/view/main/MainPresenter.java +++ b/app/src/main/java/com/example/yeseul/movieapp/view/main/MainPresenter.java @@ -4,6 +4,7 @@ import android.databinding.ObservableBoolean; import android.databinding.ObservableField; +import com.example.yeseul.movieapp.data.model.SearchMovieResponse; import com.example.yeseul.movieapp.data.source.movie.MovieRepository; import com.example.yeseul.movieapp.mapper.MovieMapper; import com.example.yeseul.movieapp.pojo.Movie; @@ -11,6 +12,7 @@ import java.util.List; +import io.reactivex.Single; import io.reactivex.android.schedulers.AndroidSchedulers; public class MainPresenter implements MainContract.Presenter { @@ -64,6 +66,8 @@ public void setAdapterView(AdapterContract.View adapterView) { this.adapterView = adapterView; this.adapterView.setOnItemClickListener(position -> view.startMovieDetailPage(this.adapterModel.getItem(position).getLinkUrl())); + this.adapterView.setOnItemLongClickListener(position -> + view.startSimpleView(this.adapterModel.getItem(position).getLinkUrl(), this.adapterModel.getItem(position).getTitle())); } @Override From 67afb2cc1fd4d1fbd30d3df73a85d1b674e04ccd Mon Sep 17 00:00:00 2001 From: Jiwon Yoo <39946936+weedrice@users.noreply.github.com> Date: Sun, 20 Jan 2019 18:55:00 +0900 Subject: [PATCH 2/3] Update BaseActivity.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit movieTitle변수 사용되도록 변경 --- .../java/com/example/yeseul/movieapp/view/BaseActivity.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/example/yeseul/movieapp/view/BaseActivity.java b/app/src/main/java/com/example/yeseul/movieapp/view/BaseActivity.java index 1a0eb1f..0a8dbd6 100644 --- a/app/src/main/java/com/example/yeseul/movieapp/view/BaseActivity.java +++ b/app/src/main/java/com/example/yeseul/movieapp/view/BaseActivity.java @@ -32,11 +32,11 @@ public void makeToast(String text){ Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } - public void showDialog(String linkUrl) { + public void showDialog(String linkUrl, String movieTitle) { WebView webView = new WebView(this); webView.setScrollbarFadingEnabled(false); webView.getSettings().setJavaScriptEnabled(true); - webView.getSettings().setUserAgentString("AndroidWebView"); + webView.getSettings().setUserAgentString(movieTitle); webView.clearCache(true); webView.loadUrl(linkUrl); @@ -54,4 +54,4 @@ public void onClick(DialogInterface dialogInterface, int i) { protected abstract int getLayoutId(); protected abstract P getPresenter(); -} \ No newline at end of file +} From 620f8d5ab9f82037c747e229ef012892be4e97a4 Mon Sep 17 00:00:00 2001 From: Jiwon Yoo <39946936+weedrice@users.noreply.github.com> Date: Sun, 20 Jan 2019 18:55:59 +0900 Subject: [PATCH 3/3] Update MainActivity.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MainActivity 내 showDialog 함수 인자로 movieTitle 추가 --- .../com/example/yeseul/movieapp/view/main/MainActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/example/yeseul/movieapp/view/main/MainActivity.java b/app/src/main/java/com/example/yeseul/movieapp/view/main/MainActivity.java index c9cef21..fdfc63c 100644 --- a/app/src/main/java/com/example/yeseul/movieapp/view/main/MainActivity.java +++ b/app/src/main/java/com/example/yeseul/movieapp/view/main/MainActivity.java @@ -125,6 +125,6 @@ public void startMovieDetailPage(String linkUrl) { * 현재 창 안에 Dialog를 이용한 웹 사이트 출력 */ @Override public void startSimpleView(String linkUrl, String movieTitle) { - showDialog(linkUrl); + showDialog(linkUrl, movieTitle); } }