您的位置:首页 > 其它

RecycleView简单应用以及上拉刷新

2017-12-10 19:35 218 查看
布局

<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.dell_pc.day12_8recyclerview.MainActivity">
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/swipe"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView_one"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
/>
</android.support.v4.widget.SwipeRefreshLayout>

</LinearLayout>


主方法

public class MainActivity extends AppCompatActivity {

private RecyclerView recyclerView_one;
private LinearLayoutManager mLayoutManager;
private RecyclerView.Adapter mAdapter;
private List<MyData> myData = new ArrayList<>();
private SwipeRefreshLayout swipe;
private boolean isLoading = false;
private  int page = 1;
private String str = "http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView_one = findViewById(R.id.recyclerView_one);
swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
//        initView();
initData(page);
setEnter();
//设置固定大小
recyclerView_one.setHasFixedSize(true);
//创建线性布局
mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
//给RecyclerView设置布局管理器
recyclerView_one.setLayoutManager(mLayoutManager);
mAdapter = new TestRecyclerAdapter(MainActivity.this, myData);
recyclerView_one.setAdapter(mAdapter);
}

private void initData(int page) {
x.http().get(new RequestParams(str + page), new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String s) {
try {

4000
JSONObject jsonObject = new JSONObject(s);
JSONArray data = jsonObject.getJSONArray("data");
for (int i = 0; i < data.length(); i++) {
JSONObject jsonObject1 = data.getJSONObject(i);
String title = jsonObject1.getString("title");
String pic = jsonObject1.getString("pic");
myData.add(new MyData(title, pic));
}
mAdapter.notifyDataSetChanged();

} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onError(Throwable throwable, boolean b) {}

@Override
public void onCancelled(CancelledException e) {}

@Override
public void onFinished() {}
});
}
private void setEnter() {

swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
myData.clear();
page++;
initData(page);
mAdapter.notifyDataSetChanged();
swipe.setRefreshing(false);
}
});
recyclerView_one.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int lastPosition = mLayoutManager.findLastVisibleItemPosition();
if (lastPosition+1 == mAdapter.getItemCount()){
if (isLoading){
return;
}else {
isLoading = true;
initData(page);
}
}
}
});
}
}


Adapter

class TestRecyclerAdapter extends RecyclerView.Adapter<TestRecyclerAdapter.ViewHolder>{
private Context context;
private List<MyData> list;
private LayoutInflater mInflater;

public TestRecyclerAdapter(Context context, List<MyData> list) {
this.context = context;
this.list = list;
mInflater = LayoutInflater.from(context);
}

/**
* item显示类型
* @param parent
* @param viewType
* @return
*/
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=mInflater.inflate(R.layout.view_rv_item,parent,false);
//view.setBackgroundColor(Color.RED);
ViewHolder viewHolder=new ViewHolder(view);
return viewHolder;
}
/**
* 数据的绑定显示
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.textView.setText(list.get(position).getTitle());
Glide.with(context).load(list.get(position).getPic()).apply(new RequestOptions().circleCrop()).into(holder.imageView);
}

@Override
public int getItemCount() {
return list.size();
}

//自定义的ViewHolder,持有每个Item的的所有界面元素
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView textView;
public ImageView imageView;
@SuppressLint("WrongViewCast")
public ViewHolder(View view){
super(view);
textView =  view.findViewById(R.id.textView);
imageView = view.findViewById(R.id.imageView);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐