Android网格布局设置可以选中其中一个
#Android网格布局设置可以选中其中一个**
Android GridView列表中的按钮要控制点击的时候选中其中一个,
如果使用系统的属性和方法试了几个确实不好实现,后面动了一点脑筋,就实现了。
效果:
其实代码实现并不难,一个是要对Item的TextView设置背景选中效果
另一个是要在Adapter中添加一个选中条目的公开方法,选中后刷新页面数据即可。
下面是Adapter的代码:
package com.liwenzhi.asr.gridviewdemo;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.List;
/**
* 可以设置选中的适配器
*/
public class FamilyRelativesListAdapter extends ArrayAdapter<String> {
private Context mContext;
private List<String> mList;
private int mSelectPosition = 0;
public FamilyRelativesListAdapter(@NonNull Context context, List<String> list, int selectPosition) {
super(context, -1, list);
mContext = context;
mList = list;
mSelectPosition = selectPosition;
}
public void setSelectPosition(int position) {
mSelectPosition = position;
notifyDataSetChanged();
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
Log.e("TAG Adapter", "getView=" + position);
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = View.inflate(mContext, R.layout.item_family_relatives, null);
viewHolder = new ViewHolder();
viewHolder.tv_family_relatives = (TextView) convertView.findViewById(R.id.tv_family_relatives);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if (position == mSelectPosition) {
viewHolder.tv_family_relatives.setSelected(true);
} else {
viewHolder.tv_family_relatives.setSelected(false);
}
viewHolder.tv_family_relatives.setText(getItem(position));
return convertView;
}
class ViewHolder {
TextView tv_family_relatives;
}
}
其他的代码就不粘贴了,可以看我的完整项目代码。
代码资源:https://download.****.net/download/wenzhi20102321/10822808
#共勉:有些事情错过一时,就错过了一生。