SearchFragment - GachonCapstoneTeam/TTS_JAVA GitHub Wiki
SearchFragment
๋ ์ฌ์ฉ์๊ฐ ์นดํ
๊ณ ๋ฆฌ๋ณ๋ก ๋ฆฌํฌํธ๋ฅผ ํ์ํ๊ฑฐ๋ ํค์๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฆฌํฌํธ๋ฅผ ๊ฒ์ํ ์ ์๋๋ก ์ง์ํ๋ ํ๋ฉด์
๋๋ค. TabLayout
, EditText
, RecyclerView
, Shimmer
๋ฑ์ ํ์ฉํ์ฌ ํ์/๊ฒ์ UI ๋ฐ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ๋ฅ | ์ค๋ช |
---|---|
๋ฆฌํฌํธ ์นดํ ๊ณ ๋ฆฌ ํํฐ | ์ ์ฒด / ์ข ๋ชฉ / ์ฐ์ ํญ์ ๋ฐ๋ผ ์๋ฒ์์ ๋ฆฌํฌํธ ๋ถ๊ธฐ ์์ฒญ |
๊ฒ์ ๊ธฐ๋ฅ | ํค์๋ ์ ๋ ฅ ํ ์๋ฒ ๊ฒ์ API ํธ์ถ๋ก ํํฐ๋ง๋ ๋ฆฌํฌํธ ์ ๊ณต |
๋ฆฌ์คํธ ๋ฌดํ ์คํฌ๋กค | ์คํฌ๋กค ํ๋จ ๋๋ฌ ์ ์๋์ผ๋ก ์ถ๊ฐ ๋ก๋ |
์๋ก๊ณ ์นจ ์ง์ | SwipeRefreshLayout์ผ๋ก ์ ์ฒด ๋ฆฌํฌํธ ์๋ก ๋ถ๋ฌ์ค๊ธฐ |
๋ก๋ฉ ์ ๋๋ฉ์ด์ | ShimmerFrameLayout์ผ๋ก ๋ก๋ฉ ์ค UI ํ์ |
๋๋ฏธ ๋ฐ์ดํฐ | ์๋ฒ ์๋ต ์คํจ ์ ๋๋ฏธ ๋ฆฌํฌํธ๋ก ์์ธ ์ฒ๋ฆฌ |
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
filterItemsByTab(tab.getPosition()); // ์ ์ฒด, ์ข
๋ชฉ, ์ฐ์
์
}
});
searchButton.setOnClickListener(v -> {
String query = searchInput.getText().toString().trim();
if (!query.isEmpty()) {
performSearch(query);
}
});
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
if (!isLoading && lastVisibleItem + 1 >= totalItemCount) {
loadNextPage();
}
}
});
client.newCall(request).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) throws IOException {
List<Item> items = parseJsonAndAddItems(response.body().string());
requireActivity().runOnUiThread(() -> {
reportAdapter.setItems(items);
shimmerFrameLayout.setVisibility(View.GONE);
recyclerView.setVisibility(View.VISIBLE);
});
}
});
shimmerFrameLayout.startShimmer();
LinearLayout shimmerLayout = view.findViewById(R.id.shimmer_linear);
for (int i = 0; i < 5; i++) {
View skeletonView = inflater.inflate(R.layout.itembox_skeleton, shimmerLayout, false);
shimmerLayout.addView(skeletonView);
}
-
ReportAdapter
: SearchFragment์ RecyclerView ์ด๋ํฐ