Android 如何在GridView中设置某些项不可链接

Android 如何在GridView中设置某些项不可链接,android,listview,gridview,Android,Listview,Gridview,例如,我需要判断项目中的内容是否可以单击项目。 如图所示,我需要获取无法单击的灰色项 这是我的适配器 public class RoomAdapter extends BaseAdapter { private LayoutInflater mInflater; private Context mContext; private List<Room> mDatas; public RoomAdapter(Conte

例如,我需要判断项目中的内容是否可以单击项目。 如图所示,我需要获取无法单击的灰色项

这是我的适配器

 public class RoomAdapter extends BaseAdapter {
        private LayoutInflater mInflater;
        private Context mContext;
        private List<Room> mDatas;


        public RoomAdapter(Context context, List<Room> mDatas) {
            mInflater = LayoutInflater.from(context);
            this.mContext = context;
            this.mDatas = mDatas;
        }

        @Override
        public int getCount() {
            return mDatas.size();
        }

        @Override
        public Object getItem(int position) {
            return mDatas.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Room room = mDatas.get(position);
            ViewHolder viewHolder = null;
            View view;
            if (convertView == null) {
                viewHolder = new ViewHolder();
                view = mInflater.inflate(R.layout.roomstate_item, null);
                viewHolder.tv_roomstate = (TextView) view.findViewById(R.id.tv_roomstate);
                viewHolder.tv_roomnumber = (TextView) view.findViewById(R.id.tv_roomnumber);
                viewHolder.tv_roomtype = (TextView) view.findViewById(R.id.tv_roomtype);
                viewHolder.tv_roomprice = (TextView) view.findViewById(R.id.tv_roomprice);
                view.setTag(viewHolder);
            }else{
                view = convertView;
                viewHolder = (ViewHolder) view.getTag();
            }
    //        String nu = room.getRoom_number();
            viewHolder.tv_roomstate.setText(room.getRoom_status());
            viewHolder.tv_roomnumber.setText(room.getRoom_number());
            viewHolder.tv_roomtype.setText(room.getRoomType().getRoom_type_name());
            viewHolder.tv_roomprice.setText(room.getRoomType().getRoom_type_price());

            if (room.getRoom_status().equals("0") &&room.getRoomType().getRoom_type_name().equals("0")) {
                view.setBackgroundResource(R.drawable.single);
               view.setClickable(false);
            } else if (room.getRoom_status().equals("1") && room.getRoomType().getRoom_type_name().equals("0")) {
                view.setBackgroundResource(R.drawable.single_b);
            } else if (room.getRoom_status().equals("1") && room.getRoomType().getRoom_type_name().equals("1")) {
                view.setBackgroundResource(R.drawable.double_b);
            } else if(room.getRoom_status().equals("0") && room.getRoomType().getRoom_type_name().equals("1")){
                view.setClickable(false);
                view.setBackgroundResource(R.drawable.doubleg);
            }

            return view;
        }

        private class ViewHolder {
            TextView tv_roomnumber;
            TextView tv_roomstate;
            TextView tv_roomtype;
            TextView tv_roomprice;
        }
    }
公共类RoomAdapter扩展了BaseAdapter{
私人停车场;
私有上下文;
私有列表数据;
公共RoomAdapter(上下文、列表数据){
mInflater=LayoutInflater.from(上下文);
this.mContext=上下文;
this.mDatas=mDatas;
}
@凌驾
public int getCount(){
返回mDatas.size();
}
@凌驾
公共对象getItem(int位置){
返回mDatas.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
Room-Room=mDatas.get(位置);
ViewHolder ViewHolder=null;
视图;
if(convertView==null){
viewHolder=新的viewHolder();
view=mInflater.inflate(R.layout.roomstate_项,空);
viewHolder.tv\u roomstate=(TextView)view.findViewById(R.id.tv\u roomstate);
viewHolder.tv\u roomnumber=(TextView)view.findViewById(R.id.tv\u roomnumber);
viewHolder.tv\u roomtype=(TextView)view.findViewById(R.id.tv\u roomtype);
viewHolder.tv\u roomprice=(TextView)view.findViewById(R.id.tv\u roomprice);
view.setTag(viewHolder);
}否则{
视图=转换视图;
viewHolder=(viewHolder)view.getTag();
}
//String nu=room.getRoom_number();
viewHolder.tv_roomstate.setText(room.getRoom_status());
viewHolder.tv_roomnumber.setText(room.getRoom_number());
viewHolder.tv_roomtype.setText(room.getRoomType().getRoomType_name());
viewHolder.tv_roomprice.setText(room.getRoomType().getRoom_type_price());
if(room.getRoom_status().equals(“0”)和&room.getRoomType().getRoom_type_name().equals(“0”)){
视图.setBackgroundResource(R.可绘制.单个);
视图。可点击设置(错误);
}else if(room.getRoom_status().equals(“1”)和&room.getRoomType().getRoom_type_name().equals(“0”)){
视图。setBackgroundResource(R.drawable.single_b);
}else if(room.getRoom_status().equals(“1”)和&room.getRoomType().getRoom_type_name().equals(“1”)){
视图。setBackgroundResource(R.drawable.double_b);
}else if(room.getRoom_status().equals(“0”)和&room.getRoomType().getRoom_type_name().equals(“1”)){
视图。可点击设置(错误);
视图.setBackgroundResource(R.drawable.doubleg);
}
返回视图;
}
私有类视窗持有者{
TextView电视室号;
TextView电视节目状态;
TextView电视室类型;
TextView电视价格;
}
}
这是我的活动

public class RoomList extends Activity {
    private ImageView iv_back;
    private TextView tv_hotelname;

    private GridView griv_hotel;

    private RoomAdapter adapter;
    private String hotelname;
    private String url
            = "http://jm/user/room/selectRoomByHotelName?hotel_name=";

    private List<Room> mRoom;
    private RoomType mRoomType;
    private boolean isfinish = false;//判断请求是否完成
    private String hotel_address;
    private String hotel_id;
    private Bundle mBundle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_book_room_list);
        init();
        sendRequestWithOkHttp();
        boolean is = true;
        while (is) {
            if (isfinish) {
                adapter = new RoomAdapter(this, mRoom);
                griv_hotel.setAdapter(adapter);
                griv_hotel.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        TextView tv_roomnumber = (TextView) view.findViewById(R.id.tv_roomnumber);
                        TextView tv_roomstate = (TextView) view.findViewById(R.id.tv_roomstate);
                        TextView tv_roomprice = (TextView) view.findViewById(R.id.tv_roomprice);
                        TextView tv_roomtype = (TextView) view.findViewById(R.id.tv_roomtype);

                        String roomnumber = tv_roomnumber.getText().toString();
                        String roomstate = tv_roomstate.getText().toString();
                        String roomtype = tv_roomtype.getText().toString();
                        String roomprice = tv_roomprice.getText().toString();

                        Log.e("房间类型",roomtype);

//                        if (roomstate.equals("0") && roomtype.equals("0")) {
//                            view.setClickable(false);
//                        } else if (roomstate.equals("1") && roomtype.equals("0")) {
//                           view.setClickable(true);
//                        } else if (roomstate.equals("1") && roomtype.equals("1")) {
//                            view.setClickable(true);
//                        } else {
//                            view.setClickable(false);
//                        }

                        mBundle.putString("roomnumber", roomnumber);
                        mBundle.putString("roomstate", roomstate);
                        mBundle.putString("roomtype", roomtype);
                        mBundle.putString("roomprice", roomprice);
                        mBundle.putString("hoteladdress", hotel_address);
                        mBundle.putString("hotelid", hotel_id);


                        Intent intent = new Intent(RoomList.this, BookRoomDetail.class);
                        intent.putExtras(mBundle);
                        startActivity(intent);
                    }
                });
                is = false;
            }
        }


    }

    private void init() {
        initView();
        initEvents();
    }

    private void initEvents() {
        iv_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }

    private void initView() {
        iv_back = (ImageView) findViewById(R.id.iv_back);
        tv_hotelname = (TextView) findViewById(R.id.tv_hotelname);
        mBundle = getIntent().getExtras();
        hotelname = mBundle.getString("hotelname");

        tv_hotelname.setText(hotelname);
        griv_hotel = (GridView) findViewById(R.id.griv_hotel);


    }

    private void sendRequestWithOkHttp() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                MediaType MEDIA_TYPE_MARKDOWN
                        = MediaType.parse("text/x-markdown; charset=utf-8");
                try {
                    OkHttpClient client = new OkHttpClient();
                    String postBody = hotelname;
                    Request request = new Request.Builder()
                            .url(url + hotelname)
                            .post(RequestBody.create(MEDIA_TYPE_MARKDOWN, postBody))
                            .build();
                    Response response = client.newCall(request).execute();
                    String responseData = response.body().string();
                    try {
                        parseJSON(responseData);
                        isfinish = true;
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    private void parseJSON(String responseData) throws JSONException {
        JSONArray JSONArray = new JSONArray(responseData);
        mRoom = new ArrayList<Room>();
        for (int i = 0; i < JSONArray.length(); i++) {
            try {
                JSONObject JSON = JSONArray.getJSONObject(i);
                String room_number = JSON.getString("room_number");
                String room_status = JSON.getString("room_status");
                JSONObject jsonObject = JSON.getJSONObject("roomType");
                String room_type_name = jsonObject.getString("room_type_name");
                String room_type_price = jsonObject.getString("room_type_price");
                JSONObject jsonObj = JSON.getJSONObject("hotel");
                hotel_id = String.valueOf(jsonObj.getInt("hotel_id"));
                hotel_address = jsonObj.getString("hotel_location");
                mRoomType = new RoomType(null, room_type_name, room_type_price, null, null);

                mRoom.add(new Room(null, room_number, room_status, null, null, mRoomType));
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }

}
public class RoomList扩展活动{
私人影像视图iv_back;
私人TextView tv_hotelname;
格里夫尤私人酒店;
专用房间适配器;
私人字符串酒店名称;
私有字符串url
= "http://jm/user/room/selectRoomByHotelName?hotel_name=";
私人名单;
私人房间类型mRoomType;
私有布尔值isfinish=false//判断请求是否完成
私人字符串酒店地址;
私人字符串酒店;
私有Bundle;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u book\u room\u list);
init();
sendRequestWithOkHttp();
布尔值为真;
while(is){
如果(isfinish){
适配器=新的房间适配器(此,mRoom);
格里夫尤酒店。塞特阿卡德(阿卡德);
griv_hotel.SetonimclickListener(新AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
TextView tv\u roomnumber=(TextView)view.findViewById(R.id.tv\u roomnumber);
TextView tv\u roomstate=(TextView)view.findViewById(R.id.tv\u roomstate);
TextView tv\u roomprice=(TextView)view.findViewById(R.id.tv\u roomprice);
TextView tv\u roomtype=(TextView)view.findViewById(R.id.tv\u roomtype);
String roomnumber=tv_roomnumber.getText().toString();
String roomstate=tv_roomstate.getText().toString();
String roomtype=tv_roomtype.getText().toString();
String roomprice=tv_roomprice.getText().toString();
Log.e(”房间类型",房间类型);
//if(roomstate.equals(“0”)&&roomtype.equals(“0”)){
//视图。可点击设置(错误);
//}else if(roomstate.equals(“1”)和&roomtype.equals(“0”)){
//视图。可点击设置(真);
//}else if(roomstate.equals(“1”)和&roomtype.equals(“1”)){
//视图。可点击设置(真);
//}其他{
//视图。可点击设置(错误);
//                        }
mBundle.putString(“roomnumber”,roomnumber);
mBundle.putString(“roomstate”,roomstate);
mBundle.putString(“roomtype”,roomtype);
mBundle.putString(“roomprice”,roomprice);
mBundle.putString(“hoteladdress”,hotel_地址);
item.setEnabled(false);
item.setEnabled(true);
if (room.getRoom_status().equals("0") &&room.getRoomType().getRoom_type_name().equals("0")) {
                view.setBackgroundResource(R.drawable.single);
               view.setEnabled(false);
            } else if (room.getRoom_status().equals("1") && room.getRoomType().getRoom_type_name().equals("0")) {
                view.setBackgroundResource(R.drawable.single_b);
            } else if (room.getRoom_status().equals("1") && room.getRoomType().getRoom_type_name().equals("1")) {
                view.setBackgroundResource(R.drawable.double_b);
            } else if(room.getRoom_status().equals("0") && room.getRoomType().getRoom_type_name().equals("1")){
                view.setEnabled(false);
                view.setBackgroundResource(R.drawable.doubleg);
            }
            else
            view.setEnabled(true);
private boolean checkedIntent = false;


if (roomstate.equals("0") && roomtype.equals("0")) {
                        checkedIntent = false;
                    } else if (roomstate.equals("1") && roomtype.equals("0")) {
                        checkedIntent = true;
                    } else if (roomstate.equals("1") && roomtype.equals("1")) {
                        checkedIntent = true;
                    } else if (roomstate.equals("0") && roomtype.equals("1")) {
                        checkedIntent = false;
                    }

if (checkedIntent == true) {
                            Intent intent = new Intent(RoomList.this, BookRoomDetail.class);
                            intent.putExtras(mBundle);
                            startActivity(intent);
                        }