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);
}