diff --git a/.idea/misc.xml b/.idea/misc.xml index 539ed66..1adffca 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -49,9 +49,10 @@ + - + diff --git a/app/src/main/java/com/example/nemophila/ShopActivity.java b/app/src/main/java/com/example/nemophila/ShopActivity.java index e2ca152..d9a9451 100644 --- a/app/src/main/java/com/example/nemophila/ShopActivity.java +++ b/app/src/main/java/com/example/nemophila/ShopActivity.java @@ -11,7 +11,10 @@ import androidx.recyclerview.widget.RecyclerView; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.os.Bundle; +import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -25,13 +28,21 @@ import com.example.nemophila.entities.Shop; import com.example.nemophila.viewmodels.PostsViewModel; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class ShopActivity extends AppCompatActivity { private ShopAcAdapter adapter = null; + private final ExecutorService executor = Executors.newSingleThreadExecutor(); + private final Handler handler = new Handler(); + private String iconUrlString; @Override protected void onCreate(Bundle savedInstanceState) { @@ -42,6 +53,7 @@ String shopName; String sid; String myUid = ((Nemophila)getApplication()).getUid(); + Bitmap iconBitmap; //NemophilaからcurrentShopを取得、店名の表示 shop = ((Nemophila)getApplication()).getCurrentShop(); @@ -73,7 +85,6 @@ //Nemophilaから選択中のジャンル(HashSet)を受け取る HashSet selectingGenre = ((Nemophila)getApplication()).getSelectGenres(); - //選択中のジャンルが何かあれば表示 if(!(selectingGenre.isEmpty())) { TextView genreView = (TextView) findViewById(R.id.shopAcGenre); @@ -82,7 +93,6 @@ //Nemophilaから選択中のフレンド(HashSet)を受け取る HashSet selectingFriend = ((Nemophila)getApplication()).getSelectFriends(); - //選択したフレンドを表示するために名前を格納するHashSetを宣言 HashSet selectingFriendName = new HashSet<>(); //フレンド選択があればフレンド名をHashSetにセットし表示する @@ -104,7 +114,7 @@ RecyclerView rv = (RecyclerView) findViewById(R.id.postsList); adapter = new ShopAcAdapter(postsDataset); - //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言 第三引数のtrueで降順に表示 + //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言 LinearLayoutManager llm = new LinearLayoutManager(this); // RecyclerView.ItemDecoration itemDecoration = @@ -114,6 +124,7 @@ rv.setHasFixedSize(true); rv.setLayoutManager(llm); + //PostViewModelを宣言し、currentShopから取得したsidの店舗の投稿をロード PostsViewModel postsViewModel = new ViewModelProvider(this).get(PostsViewModel.class); postsViewModel.loadShopPost(sid); @@ -169,6 +180,31 @@ data.setRate(strRate); data.setGenre(genre); data.setComment(post.getComment()); + + //アイコン仮セット + //url作る + iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + + executor.execute(() -> { + try{ + URL url = new URL(iconUrlString); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.connect(); + + InputStream is = con.getInputStream(); + + Bitmap bitmap = BitmapFactory.decodeStream(is); + handler.post(() -> { + data.setIcon(bitmap); + adapter.notifyItemChanged(adapter.getPosition(data)); + }); + is.close(); + con.disconnect(); + }catch (Exception e){ + e.printStackTrace(); + } + }); + //画像がなければViewの表示をgoneに、あればvisibleにして画像をセット // if(post.get) { // } @@ -201,6 +237,8 @@ this.list = list; } + public int getPosition(ShopAcDataModel data) { return list.indexOf(data); } + @NonNull @Override public ShopAcViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -217,7 +255,27 @@ holder.rateView.setText(list.get(position).getRate()); holder.genreView.setText(list.get(position).getGenre()); holder.commentView.setText(list.get(position).getComment()); -// holder.iconView.setImageResource(list.get(position).getIcon()); + holder.iconView.setImageBitmap(list.get(position).getIcon()); +// //アイコン仮セット +// executor.execute(() -> { +// try{ +// URL url = new URL(iconUrlString); +// HttpURLConnection con = (HttpURLConnection) url.openConnection(); +// con.connect(); +// +// InputStream is = con.getInputStream(); +// +// Bitmap bitmap = BitmapFactory.decodeStream(is); +// handler.post(() -> { +// ImageView imageView = findViewById(R.id.shopAcIconPic); +// imageView.setImageBitmap(bitmap); +// }); +// is.close(); +// con.disconnect(); +// }catch (Exception e){ +// e.printStackTrace(); +// } +// }); } @Override @@ -259,7 +317,7 @@ private String rate; private String genre; private String comment; - private String icon; + private Bitmap icon; private String image1; private String image2; private String image3; @@ -299,8 +357,8 @@ this.comment = comment; } - public String getIcon() { return icon; } - public void setIcon(String icon) { + public Bitmap getIcon() { return icon; } + public void setIcon(Bitmap icon) { this.icon = icon; }