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..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 @@ -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, String movieTitle) { + WebView webView = new WebView(this); + webView.setScrollbarFadingEnabled(false); + webView.getSettings().setJavaScriptEnabled(true); + webView.getSettings().setUserAgentString(movieTitle); + 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..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 @@ -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, movieTitle); + } } 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