안녕하세요. 모바일 개발자가 꿈인 학생입니다.
제가 EditText를 이용하여 EditText를 getText().toString() 해서 받은 값을 유튜브에 검색을 하는 프로젝트를 만들어 보려 합니다. 코드는 아래와 같이 입력했습니다.
하지만,, 에뮬레이터에 구동을 시켜보니,,, 텍스트를 입력하고 버튼을 누르면 비정상 종료 되진 않는데 아무런 결과도 나오지 않더라고요.. 그래서 중간 중간 Log값을 찍게 하면 Log값은 또 잘 찍어 냅니다.
코드의 어떤 부분이 문제일까요? 도와주십시오 부탁드립니다.
<SearchActivity.java>
public class SearchActivity extends Fragment {
private RecyclerView recyclerView;
private SearchAdapter adapter;
private EditText editText;
RequestQueue queue;
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_search, container, false);
recyclerView = view.findViewById(R.id.recyclerView_view);
Button button = view.findViewById(R.id.button);
editText = view.findViewById(R.id.editText);
recyclerView.setHasFixedSize(true);
GridLayoutManager layoutManager = new GridLayoutManager(getActivity(), 2);
recyclerView.setLayoutManager(layoutManager);
queue = Volley.newRequestQueue(getContext());
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = "https://www.googleapis.com/youtube/v3/search?"
+ "part=snippet&q=" + editText.getText().toString()
+ "&key=" + "유튜브 개발자 api" + "&maxResults=50";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObj = new JSONObject(response);
JSONArray arrayItems = jsonObj.getJSONArray("items");
List<SearchData> searchData = new ArrayList<>();
for (int i = 0, j = arrayItems.length(); i < j; i++) {
JSONObject obj = arrayItems.getJSONObject(i);
int original_rank = i + 1;
String original_title = obj.getJSONObject("snippet").getString("title");
String title = "#" + original_rank + " " + original_title;
String thumbUrl = obj.getJSONObject("snippet").getJSONObject("thumbnails").getJSONObject("standard").getString("url");
String videoId = obj.getJSONObject("snippet").getJSONObject("resourceId").getString("videoId");
searchData.add(new SearchData(title, thumbUrl, videoId));
}
adapter = new SearchAdapter(searchData);
Fresco.initialize(getContext());
recyclerView.setAdapter(adapter);
adapter.setOnItemClickListener(new OnSearchItemClickListener() {
@Override
public void onItemClick(SearchAdapter.ViewHolder holder, View view, int position) {
SearchData searchData1 = adapter.getItem(position);
String selectedVideoId = searchData1.getVideoId();
Intent intent = new Intent(getContext(), YoutubeViewerActivity.class);
intent.putExtra("videoId", selectedVideoId);
startActivity(intent);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(stringRequest);
}
});
return view;
}
<SearchAdapter.java>
public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder> implements OnSearchItemClickListener{
private List<SearchData> mDataset;
OnSearchItemClickListener listener;
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView textView_title;
public SimpleDraweeView imageView_thumb;
public ViewHolder(View view, final OnSearchItemClickListener listener) {
super(view);
textView_title = view.findViewById(R.id.textView_title);
imageView_thumb = view.findViewById(R.id.imageView_thumb);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = getAdapterPosition();
if (listener != null) {
listener.onItemClick(ViewHolder.this, view, position);
}
}
});
}
}
public SearchAdapter(List<SearchData> myDataset) {
mDataset = myDataset;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.search_item, parent, false);
return new ViewHolder(view, this);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
SearchData searchData = mDataset.get(position);
holder.textView_title.setText(searchData.getTitle());
Uri uri = Uri.parse(searchData.getThumb()); //Fresco
holder.imageView_thumb.setImageURI(uri);
}
@Override
public int getItemCount() {
return mDataset.size();
}
public void setOnItemClickListener(OnSearchItemClickListener listener) {
this.listener = listener;
}
@Override
public void onItemClick(ViewHolder holder, View view, int position) {
if (listener != null) {
listener.onItemClick(holder, view, position);
}
}
public SearchData getItem(int position) {
return mDataset.get(position);
}
}
<SearchData.java>
public class SearchData {
String title;
String thumb;
String videoId;
public SearchData(String title, String thumb, String videoId) {
this.title = title;
this.thumb = thumb;
this.videoId = videoId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getThumb() {
return thumb;
}
public void setThumb(String thumb) {
this.thumb = thumb;
}
public String getVideoId() {
return videoId;
}
public void setVideoId(String videoId) {
this.videoId = videoId;
}
}

에뮬레이터에는 이렇게만 나옵니다..