RecyclerView使用,RecyclerView使用,增加一個item,刪除一個item,更新資料,item點選事件
阿新 • • 發佈:2019-02-07
build.gradle
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:recyclerview-v7:24.2.0'
main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/bt111"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text ="流佈局" />
<Button
android:id="@+id/bt112"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="線性佈局" />
<Button
android:id="@+id/bt113"
android:layout_width="match_parent"
android:layout_height ="wrap_content"
android:text="新增一個Item"
android:textAllCaps="false" />
<Button
android:id="@+id/bt114"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="刪除一個Item"
android:textAllCaps="false" />
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/srl"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv111"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="這是but"
android:layout_margin="5dp"
android:id="@+id/but3"/>
</LinearLayout>
MainAcitvity
package com.baozilichao.recyclerviewuse;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
RecyclerView rv1;
List<String> list1, list2;
Button bt1, bt2, bt3, bt4;
SwipeRefreshLayout srl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
initDate();
initView();
}
private void initView() {
srl = (SwipeRefreshLayout) findViewById(R.id.srl);
rv1 = (RecyclerView) findViewById(R.id.rv111);
bt1 = (Button) findViewById(R.id.bt111);
bt2 = (Button) findViewById(R.id.bt112);
bt3 = (Button) findViewById(R.id.bt113);
bt4 = (Button) findViewById(R.id.bt114);
final MyAdpater adapter = new MyAdpater(list1);
//瀑布流
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rv1.setLayoutManager(new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL));
}
});
//線性佈局
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rv1.setLayoutManager(new LinearLayoutManager(MainActivity.this));
}
});
//增加一個item
bt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (list1.size() > 0) {
list1.add("我是加的");
adapter.notifyItemInserted(list1.size());//更新adapter
}
}
});
//刪除一個item
bt4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (list1.size() > 1) {
list1.remove(0);
adapter.notifyItemRemoved(list1.size());//移除更新
}
}
});
// 重新整理
srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if (list1.size() > 0) {
list1.add("我是重新整理的");
list1.addAll(list2);
adapter.notifyItemInserted(list1.size());
srl.setRefreshing(false);//停止重新整理
}
}
});
//item點選事件
rv1.setAdapter(adapter);
adapter.setOnclickible(new MainActivity.Onclickible() {
@Override
public void ItemClick(int pos) {
adapter.list1.add(list1.size() + "");
adapter.notifyItemInserted(list1.size());
// adapter.addData(list1.size()+"", list1.size());
Toast.makeText(MainActivity.this, "" + pos, Toast.LENGTH_SHORT).show();
}
});
}
private void initDate() {
list1 = new ArrayList<>();
for (int i = 0; i < 12; i++) {
list1.add("item" + i);
}
list2 = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list2.add("item" + i);
}
}
class MyAdpater extends RecyclerView.Adapter<MyAdpater.MyViewHolder> {
private List<String> list1;
private MainActivity.Onclickible onclickible;
public MyAdpater(List<String> list1) {
this.list1 = list1;
}
public void setOnclickible(MainActivity.Onclickible onclickible) {
this.onclickible = onclickible;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(MainActivity.this, R.layout.item, null);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public int getItemCount() {
return list1.size();
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
MyViewHolder mholder = holder;
mholder.tv3.setText(list1.get(position));
mholder.tv3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onclickible.ItemClick(position);
}
});
}
class MyViewHolder extends RecyclerView.ViewHolder {
Button tv3;
public MyViewHolder(View itemView) {
super(itemView);
tv3 = (Button) itemView.findViewById(R.id.but3);
}
}
}
public interface Onclickible {
void ItemClick(int pos);
}
}