Android网格布局设置可以选中其中一个

#Android网格布局设置可以选中其中一个**

Android GridView列表中的按钮要控制点击的时候选中其中一个,
如果使用系统的属性和方法试了几个确实不好实现,后面动了一点脑筋,就实现了。

效果:

Android网格布局设置可以选中其中一个

其实代码实现并不难,一个是要对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

#共勉:有些事情错过一时,就错过了一生。