Android 에서 RecyclerView 가 Item 추가 및 삭 제 를 실현 하 는 코드 예제
선행 효과 도:
RecyclerView 프로필:
RecyclerView 는 다음 과 같은 두 가지 방식 으로 데이터 의 전시 와 처 리 를 간소화 했다.
1.LayoutManager 를 사용 하여 모든 item 의 배열 방식 을 확인 합 니 다.
2.항목 을 추가 하고 삭제 하기 위해 기본 애니메이션 효 과 를 제공 하고 사용자 정의 도 할 수 있 습 니 다.
RecyclerView 프로젝트 구 조 는 다음 과 같 습 니 다.
Adapter:RecyclerView 를 사용 하기 전에 RecyclerView 를 계승 하 는 어댑터 가 필요 합 니 다.Adapter 는 데 이 터 를 모든 항목 의 인터페이스 와 연결 하 는 역할 을 합 니 다.
LayoutManager:모든 아 이 템 을 어떻게 배열 하고 배치 하 는 지,언제 보 여주 고 숨 기 는 지 확인 합 니 다.
RecyclerView-Item 추가:
어댑터 에 다음 코드 를 추가 합 니 다:
//
public void addData(int position) {
// list ,
list.add(position, " " + position);
//
notifyItemInserted(position);
}
호출 시간:
adapter.addData(list.size());
RecyclerView-Item 삭제:어댑터 에 다음 코드 를 추가 합 니 다:
//
public void removeData(int position) {
list.remove(position);
//
notifyItemRemoved(position);
notifyDataSetChanged();
}
호출 시간:
//Item
removeData(position);
//
adapter. removeData(position);
주의해 야 할 것 은 제 가 애니메이션 을 삭제 한 다음 에 notifyDataSetChanged()를 추가 한 것 입 니 다.코드 는 우리 가 항목 을 삭제 할 때 반드시 순서대로 삭제 하 는 것 이 아니 기 때문에 잘못된 위치 에서 삭 제 될 수 있 습 니 다.그러면 position 의 원인 으로 인해 각 표 의 경계 이상 이 발생 할 수 있 기 때문에 전체적으로 새로 고침 해 야 합 니 다.전체 코드:
**1.MainActivity **
package com.android.qzs.qzsrecycleview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private ImageView iv_add;
private RecycleAdapter adapter;
private List<String> list = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initRecycle();
iv_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//
adapter.addData(list.size());
}
});
}
private void initRecycle() {
//
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(linearLayoutManager);
// , ,
list = initData();
adapter = new RecycleAdapter(MainActivity.this, list);
mRecyclerView.setAdapter(adapter);
//
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
}
private void initView() {
iv_add = (ImageView) findViewById(R.id.iv_add);
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);
}
protected ArrayList<String> initData() {
ArrayList<String> mDatas = new ArrayList<String>();
for (int i = 0; i < 1; i++) {
mDatas.add(" " + i);
}
return mDatas;
}
}
2.RecycleAdapter
package com.android.qzs.qzsrecycleview;
import android.content.Context;
import android.support.design.widget.Snackbar;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by qzs on 2017/9/04.
*/
class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.MyViewHolder> {
private Context context;
private List<String> list;
public RecycleAdapter(Context context, List<String> list) {
this.context = context;
this.list = list;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
context).inflate(R.layout.item_home, parent,
false));
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.tv.setText(list.get(position));
holder.tv_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (list.size() == 1) {
Snackbar.make(v, " ", Snackbar.LENGTH_SHORT).show();
} else {
//
removeData(position);
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
//
public void addData(int position) {
// list ,
list.add(position, " " + position);
//
notifyItemInserted(position);
}
//
public void removeData(int position) {
list.remove(position);
//
notifyItemRemoved(position);
notifyDataSetChanged();
}
/**
* ViewHolder ,
*/
class MyViewHolder extends RecyclerView.ViewHolder {
TextView tv, tv_delete;
// , , !
public MyViewHolder(View view) {
super(view);
tv = (TextView) view.findViewById(R.id.id_num);
tv_delete = (TextView) view.findViewById(R.id.tv_delete);
}
}
}
원본 다운로드 주소 이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.