공식 홈페이지 => https://google.github.io/volley/
Volley overview
Volley overview Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster. Volley is available on GitHub. Volley offers the following benefits: Automatic scheduling of network requests. Multiple concurrent network
google.github.io
build.gradle파일의 dependencies에 아래 코드 입력
dependencies {
implementation(libs.appcompat)
implementation(libs.material)
implementation(libs.activity)
implementation(libs.constraintlayout)
testImplementation(libs.junit)
androidTestImplementation(libs.ext.junit)
androidTestImplementation(libs.espresso.core)
// 추가한 항목
implementation("com.android.volley:volley:1.2.1")
}
AndroidManifest.xml 에 <application> 위에 아래 코드 추가 ( 권한 설정 )
<uses-permission android:name="android.permission.INTERNET"/>
실행할 액티비티에서 사용
public class MainActivity extends AppCompatActivity {
ProgressBar progressBar;
FloatingActionButton fab;
// todo 리사이클러뷰는 한번에 설정
RecyclerView recyclerView;
ArrayList<Posting> postingArrayList = new ArrayList<>();
PostingAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = findViewById(R.id.progressBar);
fab = findViewById(R.id.fab);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
// 리사이클러뷰는 한번에 설정
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
// 설정이 끝나면 네트워크 통해서 데이터를 받아오고 화면에 표시한다.
// 1. request queue 를 만든다.
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
// 2. request 를 만든다. => 응답 데이터의 JSON 형식을 먼저 확인한다.
JsonObjectRequest request = new JsonObjectRequest(
// 가져올 방식
Request.Method.GET,
// URL
"https://block1-image-test.s3.ap-northeast-2.amazonaws.com/posting.json",
// 보낼 데이터 X => null
null,
// 성공했을때 받아온 데이터 처리
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
progressBar.setVisibility(View.GONE);
// response에 데이터가 있으니 이 데이터를 Parsing
try {
JSONArray dataArray = response.getJSONArray("data");
// 하나씩 꺼내서 메모리에 객체 생성하고
// 여러 개니까 어레이리스트에 저장
// 모든 데이터를 전부 저장하고 나면 화면에 표시
for(int i=0; i<dataArray.length(); i++){
JSONObject data = dataArray.getJSONObject(i);
int id = data.getInt("id");
int userId = data.getInt("userId");
String title = data.getString("title");
String body = data.getString("body");
Posting posting = new Posting(id, userId, title, body);
postingArrayList.add(posting);
}
adapter = new PostingAdapter(MainActivity.this, postingArrayList);
recyclerView.setAdapter(adapter);
} catch (JSONException e) {
Toast.makeText(MainActivity.this,
"파싱 에러",
Toast.LENGTH_SHORT).show();
Log.i("ACTION MAIN", e.toString());
return;
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
progressBar.setVisibility(View.GONE);
Toast.makeText(MainActivity.this,
"네트워크 통신 에러",
Toast.LENGTH_SHORT).show();
Log.i("ACTION MAIN", volleyError.toString());
}
}
);
// 3. 만든 request 를 queue 에 넣어준다.
queue.add(request);
}
}
'Android Studio' 카테고리의 다른 글
[Android Studio] 이미지 로딩 라이브러리 Glide (1) | 2024.06.12 |
---|---|
[Android Studio] Json 데이터 파싱 (0) | 2024.06.11 |
[Android Studio] Activity 간의 데이터 전달 (단방향, 양방향) (0) | 2024.06.07 |
[Android Studio] Activity 라이프 사이클 Life Cycle (0) | 2024.06.07 |
[Android Studio] AlertDialog (0) | 2024.06.05 |