1、item無法居中
View view = LayoutInflater.from(parent.getContext())
.inflate(***,parent,false);
複製程式碼
解決方法如上,在adapter中,初始化佈局時,要引入parent,而不能像下面的操作:
View view = LayoutInflater.from(parent.getContext())
.inflate(***,null);
複製程式碼
上述方式好像是隻引用了item的佈局,未能得到父佈局的屬性。
2、新增分割線 --- 只針對線性佈局
//新增自定義分割線
DividerItemDecoration divider = new DividerItemDecoration(this,DividerItemDecoration.VERTICAL);
divider.setDrawable(ContextCompat.getDrawable(this,R.drawable.custom_divider));//可以用shape寫一個自定義的分割線,如果不設定,就使用預設的灰色
recyclerView.addItemDecoration(divider);
複製程式碼
3、預設沒有觸控效果
這個很尷尬,觸控上去沒有listview那種背景變深的感覺,感覺不好(꒦_꒦)
- 解決方法,在根部局中加入背景狀態,如果沒有定製的,則可以直接使用android預設的效果
android:background="?attr/selectableItemBackground"
android:clickable="true"
複製程式碼
這裡引用了android私有的background。
(更新)2018年6月29日15:57:43
- 今天遇到坑了,按照上面的方法,寫了個selector,實現觸控後背景框變小的效果,但是怎麼嘗試都沒有效果,折騰了近兩個小時,最後才發現,不管你selector中press狀態的圖片怎麼設定,它都是按照normal的狀態自動填滿,所以在press狀態圖片沒有留空白透明邊框的情況下,是無法區分兩種效果的。
4、item點選事件新增
在adapter中通過介面方式,定義點選事件,然後在adapter中實現該事件。
OnItemClickListener onItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
複製程式碼
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
holder.textView.setText(stringList.get(position));
holder.rootLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClickListener.onItemClick(v,position);
}
});
}
複製程式碼
最後在外部響應:
adapter.setOnItemClickListener(new Adapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
//todo
}
});
複製程式碼