package com.lzx.demo.ui;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.github.jdsjlzx.interfaces.OnItemClickListener;
import com.github.jdsjlzx.interfaces.OnItemLongClickListener;
import com.github.jdsjlzx.recyclerview.LRecyclerView;
import com.github.jdsjlzx.recyclerview.LRecyclerViewAdapter;
import com.lzx.demo.R;
import com.lzx.demo.base.ListBaseAdapter;
import com.lzx.demo.base.SuperViewHolder;
import com.lzx.demo.bean.ItemModel;
import com.lzx.demo.imageloader.ImageLoader;
import com.lzx.demo.imageloader.ImageLoaderUtil;
import com.lzx.demo.util.AppToast;
import com.lzx.demo.util.TLog;
import com.lzx.demo.view.SampleFooter;
import com.lzx.demo.view.SampleHeader;
import java.util.ArrayList;
import java.util.List;
/**
*
* 局部刷新
*/
public class PartialRefreshActivity extends AppCompatActivity {
private LRecyclerView mRecyclerView = null;
private DataAdapter mDataAdapter = null;
private LRecyclerViewAdapter mLRecyclerViewAdapter = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sample_ll_activity);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mRecyclerView = (LRecyclerView) findViewById(R.id.list);
//init data
ArrayList<ItemModel> dataList = new ArrayList<>();
for (int i = 0; i < 5; i++) {
ItemModel itemModel = new ItemModel();
itemModel.title = "item" + i;
itemModel.imgUrl = "http://img.blog.csdn.net/20160603160856217";
dataList.add(itemModel);
}
mDataAdapter = new DataAdapter(this);
mDataAdapter.setDataList(dataList);
mLRecyclerViewAdapter = new LRecyclerViewAdapter(mDataAdapter);
mRecyclerView.setAdapter(mLRecyclerViewAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//add a HeaderView
View header = LayoutInflater.from(this).inflate(R.layout.sample_header,(ViewGroup)findViewById(android.R.id.content), false);
mLRecyclerViewAdapter.addHeaderView(header);
mLRecyclerViewAdapter.addHeaderView(new SampleHeader(this));
//add a FooterView
mLRecyclerViewAdapter.addFooterView(new SampleFooter(this));
//禁止下拉刷新功能
mRecyclerView.setPullRefreshEnabled(false);
mLRecyclerViewAdapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
ItemModel item = mDataAdapter.getDataList().get(position);
AppToast.showShortText(PartialRefreshActivity.this, item.title);
}
});
mLRecyclerViewAdapter.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public void onItemLongClick(View view, int position) {
ItemModel item = mDataAdapter.getDataList().get(position);
AppToast.showShortText(PartialRefreshActivity.this, "onItemLongClick - " + item.title);
}
});
}
private class DataAdapter extends ListBaseAdapter<ItemModel> {
public DataAdapter(Context context) {
super(context);
}
@Override
public int getLayoutId() {
return R.layout.list_item_pic;
}
@Override
public void onBindItemHolder(SuperViewHolder holder, int position) {
bind(holder,position);
}
@Override
public void onBindItemHolder(SuperViewHolder holder, int position, List<Object> payloads) {
super.onBindItemHolder(holder, position, payloads);
//注意:payloads的size总是1
String payload = (String)payloads.get(0);
TLog.error("payload = " + payload);
TextView textView = holder.getView(R.id.info_text);
//需要更新的控件
ItemModel itemModel = mDataList.get(position);
textView.setText(itemModel.title);
}
private void bind(SuperViewHolder holder, int position) {
ItemModel itemModel = mDataList.get(position);
TextView textView = holder.getView(R.id.info_text);
ImageView avatarImage = holder.getView(R.id.avatar_image);
textView.setText(itemModel.title);
ImageLoaderUtil imageLoaderUtil = new ImageLoaderUtil();
ImageLoader imageLoader = new ImageLoader.Builder()
.imgView(avatarImage)
.url(itemModel.imgUrl)
//.strategy(ImageLoaderUtil.LOAD_STRATEGY_ONLY_WIFI) 可以不写
.build();
//imageLoaderUtil.setLoadImgStrategy(new GlideImageLoaderStrategy()); //这里可以更改图片加载框架
imageLoaderUtil.loadImage(mContext, imageLoader);
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_partial_refresh, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
} else if (item.getItemId() == R.id.menu_partial_refresh) {
int position = 1;//指定列表中的第2个item
ItemModel itemModel = mDataAdapter.getDataList().get(position);
itemModel.id = 100;
itemModel.title = "refresh item " + itemModel.id;
mDataAdapter.getDataList().set(position,itemModel);
//RecyclerView局部刷新
// notifyItemChanged(int position, Object payload) 其中的payload相当于一个标记,类型不限
mLRecyclerViewAdapter.notifyItemChanged(mLRecyclerViewAdapter.getAdapterPosition(false,position) , "jdsjlzx");
}
return true;
}
}