1. 程式人生 > >RecyclerView 通用Adapter和通用ViewHolder

RecyclerView 通用Adapter和通用ViewHolder

背景

在使用RecyclerView時,經常需要針對特定的頁面寫viewHolder,相當繁瑣。後來看到專案中採用了統一通用的viewHolder,使用相當簡單。為了更加通用,對原有程式碼進行了抽象簡化,做成了一個依賴庫,直接呼叫即可。

先上效果圖:

image.png

開原始碼地址(一共四個類):

https://github.com/cxyzy1/commonViewHolder

  • 通用adapter基礎類:BaseCommonAdapter
  • 多佈局通用adapter:MultipleCommonAdapter
  • 單佈局通用adapter:SimpleCommonAdapter
  • 通用viewHolder:ViewHolder

使用方法:

  1. 工程根目錄下build.gradle檔案新增:
allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
}
  1. app工程下build.gradle檔案新增依賴:
dependencies {
	        implementation 'com.github.cxyzy1:commonViewHolder:0.0.2'
	}
  1. 呼叫樣例:
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