Header+单一样式条目布局
package com.lwksample.rcvadapter;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
import com.lwkandroid.rcvadapter.RcvMultiAdapter;
import com.lwkandroid.rcvadapter.bean.RcvSectionWrapper;
import com.lwkandroid.rcvadapter.holder.RcvHolder;
import com.lwkandroid.rcvadapter.listener.RcvItemViewClickListener;
import com.lwkandroid.rcvadapter.listener.RcvItemViewLongClickListener;
import com.lwkandroid.rcvadapter.listener.RcvLoadMoreListener;
import com.lwkandroid.rcvadapter.ui.RcvDefLoadMoreView;
import com.lwkandroid.rcvadapter.utils.RcvGridDecoration;
import com.lwkandroid.rcvadapter.utils.RcvLinearDecoration;
/**
* 效果界面
*/
public class Detail1Activity extends AppCompatActivity implements RcvMultiAdapter.OnChildClickListener
{
private static final String TAG = "Detail1Activity";
private int viewTypeFlag;
private RecyclerView mRecyclerView;
private RcvMultiAdapter mAdapter;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
mHandler = new Handler(getMainLooper());
mRecyclerView = (RecyclerView) findViewById(R.id.rcv_detail);
mRecyclerView.setLayoutManager(new LinearLayoutManager(Detail1Activity.this, RecyclerView.VERTICAL, false));
mRecyclerView.addItemDecoration(RcvLinearDecoration.createDefaultVertical(Color.DKGRAY));
mAdapter = new TestSingleAdapter(this, null);
// mAdapter = new TestSectionMultiLabelAdapter(this, null);
//添加HeaderView、FooterView、LoadMore
//要先设置RecyclerView的LayoutManager!!!!
View headerView = getLayoutInflater().inflate(R.layout.layout_headview, (ViewGroup) findViewById(android.R.id.content), false);
mAdapter.addHeaderView(headerView);
if (viewTypeFlag == ParamsFlag.VIEW_TYPE_SECTION)
mAdapter.refreshDatas(DataModel.getSomeSectionData(30));
else
mAdapter.refreshDatas(DataModel.getSomeTestData("模拟数据", 30));
RcvDefLoadMoreView loadMoreView = new RcvDefLoadMoreView.Builder()
.setTextColor(Color.BLUE)
.setTextSizeResId(R.dimen.text_size_test)
.setIconAndLoadingSizeResId(R.dimen.icon_size_test)
.build(this);
mAdapter.setLoadMoreLayout(loadMoreView);
mAdapter.enableLoadMore(true);
mAdapter.setOnLoadMoreListener(new RcvLoadMoreListener()
{
@Override
public void onLoadMoreRequest()
{
mHandler.postDelayed(new Runnable()
{
@Override
public void run()
{
if (viewTypeFlag == ParamsFlag.VIEW_TYPE_SECTION)
{
mAdapter.notifyLoadMoreSuccess(DataModel.getSomeSectionData(5), false);
} else
{
mAdapter.notifyLoadMoreSuccess(DataModel.getSomeTestData("新增数据", 5), false);
}
}
}, 1000);
}
});
//item的点击事件
Log.e("wy", "onCreate: "+viewTypeFlag);
if (viewTypeFlag == ParamsFlag.VIEW_TYPE_SECTION)
{
//注意点击监听的泛型!!!!
mAdapter.setOnItemClickListener(new RcvItemViewClickListener<RcvSectionWrapper<TestSection, TestData>>()
{
@Override
public void onItemViewClicked(RcvHolder holder, RcvSectionWrapper<TestSection, TestData> wrapper, int position)
{
Toast.makeText(Detail1Activity.this, "Click position=" + position + " wrapper=" + wrapper, Toast.LENGTH_SHORT).show();
}
});
mAdapter.setOnItemLongClickListener(new RcvItemViewLongClickListener<RcvSectionWrapper<TestSection, TestData>>()
{
@Override
public void onItemViewLongClicked(RcvHolder holder, RcvSectionWrapper<TestSection, TestData> wrapper, int position)
{
Toast.makeText(Detail1Activity.this, "LongClick position=" + position + " wrapper=" + wrapper, Toast.LENGTH_SHORT).show();
}
});
} else
{
Log.e("wy", "121onCreate: "+viewTypeFlag);
mAdapter.setOnItemClickListener(new RcvItemViewClickListener<TestData>()
{
@Override
public void onItemViewClicked(RcvHolder holder, TestData testData, int position)
{
Log.e("wy", "128onCreate: "+viewTypeFlag);
Toast.makeText(Detail1Activity.this, "Click position=" + position + " data=" + testData, Toast.LENGTH_SHORT).show();
}
});
mAdapter.setOnItemLongClickListener(new RcvItemViewLongClickListener<TestData>()
{
@Override
public void onItemViewLongClicked(RcvHolder holder, TestData testData, int position)
{
Toast.makeText(Detail1Activity.this, "LongClick position=" + position + " data=" + testData, Toast.LENGTH_SHORT).show();
}
});
}
mAdapter.setOnChildClickListener(android.R.id.text1, this);
mAdapter.setOnChildClickListener(R.id.tv_left, this);
mAdapter.setOnChildClickListener(R.id.tv_right, this);
mRecyclerView.setAdapter(mAdapter);
}
@Override
public void onChildClicked(int viewId, View view, Object o, int layoutPosition)
{
switch (viewId)
{
case android.R.id.text1:
Log.e(TAG, "onChildClicked: viewId=" + viewId + " data=" + o + " position=" + layoutPosition);
break;
case R.id.tv_left:
Log.e(TAG, "onChildClicked: viewId=" + viewId + " data=" + o + " position=" + layoutPosition);
break;
case R.id.tv_right:
Log.e(TAG, "onChildClicked: viewId=" + viewId + " data=" + o + " position=" + layoutPosition);
break;
}
}
}
https://gitee.com/xiyangyang8110/RecyclerViewAdapter