RecyclerView 通用Adapter和通用ViewHolder
阿新 • • 發佈:2018-12-13
背景
在使用RecyclerView時,經常需要針對特定的頁面寫viewHolder,相當繁瑣。後來看到專案中採用了統一通用的viewHolder,使用相當簡單。為了更加通用,對原有程式碼進行了抽象簡化,做成了一個依賴庫,直接呼叫即可。
先上效果圖:
開原始碼地址(一共四個類):
https://github.com/cxyzy1/commonViewHolder
- 通用adapter基礎類:BaseCommonAdapter
- 多佈局通用adapter:MultipleCommonAdapter
- 單佈局通用adapter:SimpleCommonAdapter
- 通用viewHolder:ViewHolder
使用方法:
- 工程根目錄下build.gradle檔案新增:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- app工程下build.gradle檔案新增依賴:
dependencies {
implementation 'com.github.cxyzy1:commonViewHolder:0.0.2'
}
- 呼叫樣例:
List<String> data = prepareData(); RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(prepareAdapter(data)); private SimpleCommonAdapter<String> prepareAdapter(List<String> data) { return new SimpleCommonAdapter<String>(data, android.R.layout.simple_list_item_1) { @Override protected void onBindViewHolder(ViewHolder holder, String data, int position) { holder.setText(android.R.id.text1, data) .setTextColor(android.R.id.text1, Color.RED) .setOnItemClickListener((view) -> Toast.makeText(MainActivity.this, String.valueOf(position), Toast.LENGTH_SHORT).show() ); } }; } private List<String> prepareData() { List<String> data = new ArrayList<>(100); for (int i = 0; i < 100; i++) { data.add("text-" + i); } return data; }
安卓開發技術分享: https://blog.csdn.net/yinxing2008/article/details/84555061