안드로이드 스튜디오 리사이클러뷰 공식 개발 문서
https://developer.android.com/guide/topics/ui/layout/recyclerview
Create a List with RecyclerView | Android Developers
Using RecyclerView to display lists and grids of dynamic content.
developer.android.com
public class MyActivity extends Activity {
private RecyclerView recyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity);
recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
recyclerView.setHasFixedSize(true);
// use a linear layout manager
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
// specify an adapter (see also next example)
mAdapter = new MyAdapter(myDataset);
recyclerView.setAdapter(mAdapter);
}
// ...
}
위 리사이클러뷰 자바 코드를 넣을 클래스를 생성해준다.
아래 코드를 클래스 안에 넣은 모습
public class MyActivity extends Activity {
private RecyclerView recyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity);
recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
recyclerView.setHasFixedSize(true);
// use a linear layout manager
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
// specify an adapter (see also next example)
mAdapter = new MyAdapter(myDataset);
recyclerView.setAdapter(mAdapter);
}
// ...
}
클래스명 옆에 extends AppCompatActivity를 붙혀준다.
리사이클러뷰에 해당하는 xml 과 recyclerview id를 연결시켜 줍니다.
Adapter 클래스를 생성하여 줍니다.
어댑터 클래스에 아래 코드를 붙혀 줍니다.
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private String[] mDataset;
// Provide a reference to the views for each data item
// Complex data items may need more than one view per item, and
// you provide access to all the views for a data item in a view holder
public static class MyViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView textView;
public MyViewHolder(TextView v) {
super(v);
textView = v;
}
}
// Provide a suitable constructor (depends on the kind of dataset)
public MyAdapter(String[] myDataset) {
mDataset = myDataset;
}
// Create new views (invoked by the layout manager)
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
TextView v = (TextView) LayoutInflater.from(parent.getContext())
.inflate(R.layout.my_text_view, parent, false);
...
MyViewHolder vh = new MyViewHolder(v);
return vh;
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
holder.textView.setText(mDataset[position]);
}
// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return mDataset.length;
}
}
클래스 명과 다른 부분은 Ctrl + R을 눌러서 My라는 글자를
Gallery(자신의 프로젝트에 맞는 클래스명)으로 변경해줍니다.
명칭을 맞게 변경해 줍니다.
그 후 myDataset을 정의해 줍니다.
myDataset 는 String으로 정의되어 있습니다.
String [] myDataset = {""}; 의 형식으로 정의해 줍니다.
Gallery_text_view에 들어갈 item_gallery.xml 를 만들어 줍니다.
item_gallery.xml 에서 CardView를 제작해줍니다.
CardView를 상단에 정의해줍니다.
Textview 였던것을 cardView로 재정의해줍니다.
갤러리 읽기 위한 권한 넣기
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
안드로이드 권한 요청 추가하기
공식문서 : https://developer.android.com/training/permissions/requesting
앱 권한 요청 | Android Developers
모든 Android 앱은 액세스가 제한된 샌드박스에서 실행됩니다. 자체 샌드박스 밖에 있는 리소스나 정보를 앱이 사용해야 하는 경우에는 앱이 적절한 권한을 요청해야 합니다. 앱에 권한이 필요함을 선언하려면 해당 권한을 앱 manifest에 나열한 후 사용자가 런타임에 각 권한을 승인하도록 요청합니다(Android 6.0 이상). 이 페이지에서는 Android 지원 라이브러리를 사용하여 권한을 확인하고 요청하는 방법을 설명합니다. Android 프레임워크에
developer.android.com
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
arrayOf(Manifest.permission.READ_CONTACTS),
MY_PERMISSIONS_REQUEST_READ_CONTACTS)
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
} else {
// Permission has already been granted
}
갤러리 액티비티 진입전 권한요청 코드 추가
MY_PERMISSIONS_REQUEST_READ_CONTACTS란?
MY_PERMISSIONS_REQUEST_READ_CONTACTS 를 1로 변경
READ_EXTERNAL_STORAGE 권한과 액티비티를 추가 해줌
권한 요청 응답 처리
사용자가 앱 권한 요청에 응답하면 시스템은 앱의 onRequestPermissionsResult() 메서드를 호출하여 사용자 응답에 전달합니다. 권한이 부여되었는지 확인하려면 앱은 해당 메서드를 재정의해야 합니다. 이 콜백에는 requestPermissions()에 전달한 것과 동일한 요청 코드가 전달됩니다. 예를 들어 앱이 READ_CONTACTS 액세스를 요청하는 경우 다음과 같은 콜백 메서드가 있을 수 있습니다.
'SW - 안드로이드' 카테고리의 다른 글
안드로이드 스튜디오 MainActivity에 오리엔테이션 적용으로 화면 회전 방지 하는 방법 (0) | 2019.09.03 |
---|---|
안드로이드스튜디오 스터디 _ 네트워킹 - (웹으로 요청하기) 이미지 다운로드 (0) | 2019.01.07 |
안드로이드스튜디오 스터디 _ 네트워킹 - (웹으로 요청하기) GSON 이해하기 (0) | 2019.01.07 |
안드로이드스튜디오 스터디 _ 네트워킹 - (웹으로 요청하기) JSON 이해하기 (0) | 2019.01.06 |
안드로이드스튜디오 스터디 _ 네트워킹 - (웹으로 요청하기) Volley 사용하기 (0) | 2019.01.05 |
안드로이드스튜디오 스터디 _ 네트워킹 - (웹으로 요청하기) HTTP Thread (2) | 2019.01.05 |
안드로이드 어플리케이션 개발 (0) | 2017.08.23 |
댓글