gpt4 book ai didi

java - 根据值禁用 ListView 内的按钮 - Android

转载 作者:行者123 更新时间:2023-12-01 11:17:41 25 4
gpt4 key购买 nike

我正在尝试根据值禁用自定义 ListView 中特定项目的按钮。但它禁用了 ListView 中所有项目的按钮。我的 CustomAdapter 代码如下

 public View getView(int position, View convertView, final ViewGroup parent) {

View vi = convertView;
ViewHolder holder;

if(convertView==null){

vi = inflater.inflate(R.layout.tabitem, null);

holder = new ViewHolder();
holder.txtRef = (TextView) vi.findViewById(R.id.lst_txt_jobpartid);
holder.txtDate=(TextView)vi.findViewById(R.id.lst_txt_date);
holder.txtTime=(TextView)vi.findViewById(R.id.lst_txt_time);
holder.txtNotes=(TextView)vi.findViewById(R.id.lst_txt_notes);
holder.txtPick=(TextView)vi.findViewById(R.id.lst_txt_pick);
holder.txtVia=(TextView)vi.findViewById(R.id.lst_txt_via);
holder.txtDrop=(TextView)vi.findViewById(R.id.lst_txt_drop);
holder.txtPassengers=(TextView)vi.findViewById(R.id.lst_txt_passangers);
holder.txtSuitcases=(TextView)vi.findViewById(R.id.lst_txt_luggages);
holder.txtChildseat=(TextView)vi.findViewById(R.id.lst_txt_childseat);
holder.txtFlight=(TextView)vi.findViewById(R.id.lst_txt_flight);
holder.txtExpArrival=(TextView)vi.findViewById(R.id.lst_txt_expArrival);
holder.txtMeetnGreet=(TextView)vi.findViewById(R.id.lst_txt_meetngreet);
holder.txtVehicle=(TextView)vi.findViewById(R.id.lst_txt_vehicle);
holder.txtReturn=(TextView)vi.findViewById(R.id.lst_txt_waitnrtn);
holder.txtFee=(TextView)vi.findViewById(R.id.lst_txt_fee);
holder.txtTopup=(TextView)vi.findViewById(R.id.lst_txt_topup);
holder.txtPay=(TextView)vi.findViewById(R.id.lst_txt_paymethod);
holder.txtPrice=(TextView)vi.findViewById(R.id.lst_txt_price);
holder.btnAccept=(Button)vi.findViewById(R.id.lst_btnAccept);

vi.setTag( holder );
}
else
holder=(ViewHolder)vi.getTag();

if(data.size()<=0)
{

}
else
{
tempValues=null;
tempValues = ( job_details ) data.get( position );

holder.txtRef.setText(String.valueOf(tempValues.getRequestedJobPartID()));
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String dateString = sdf.format(tempValues.getPickupDate());
holder.txtDate.setText(dateString);
sdf = new SimpleDateFormat("HH:mm");
dateString = sdf.format(tempValues.getPickupDate());
holder.txtTime.setText(dateString);
holder.txtNotes.setText(tempValues.getNotes());
holder.txtPick.setText(tempValues.getPickupAddress());
holder.txtVia.setText(tempValues.getViaLocations());
holder.txtDrop.setText(tempValues.getDropoffAddress()); holder.txtPassengers.setText(String.valueOf(tempValues.getPassengers())); holder.txtSuitcases.setText(String.valueOf(tempValues.getSuitcases()));
holder.txtChildseat.setText(tempValues.getChildSeat());
holder.txtFlight.setText(tempValues.getFlightNumber());
sdf = new SimpleDateFormat("yyyyMMdd kk:mm");

if(tempValues.getExpFlightArrival()!=null) {
dateString = sdf.format(tempValues.getExpFlightArrival());
holder.txtExpArrival.setText(dateString);
}
holder.txtMeetnGreet.setText(tempValues.getMeetAndGreet());
holder.txtVehicle.setText(tempValues.getVehicleType());
holder.txtReturn.setText(tempValues.getJourneyType()); holder.txtFee.setText(String.valueOf(tempValues.getBookingFee()));holder.txtTopup.setText(String.valueOf(tempValues.getAdjustment()));
holder.txtPay.setText(tempValues.getPaymentMethod());
holder.txtPrice.setText(tempValues.getTotalFare());
Button btn1=(Button)vi.findViewById(R.id.lst_btnReject);
Button btn=(Button)vi.findViewById(R.id.lst_btnAccept);
//Checking the value and disabling/enabling the buttons
if(tempValues.getRequestStatus()=="Accepted")
{
holder.btnAccept.setEnabled(false);
holder.btnAccept.setEnabled(false);
}
else
{
holder.btnAccept.setEnabled(true);
holder.btnAccept.setEnabled(true);
}

Button btn2=(Button)vi.findViewById(R.id.lst_btnStart);
btn2.setOnClickListener(new OnItemClickListener(position, "Start", tempValues.getRequestedJobPartID()));

//vi.setOnClickListener(new OnItemClickListener(position));

}
return vi;
}

任何建议将不胜感激。

ListView 项上的单击事件也不起作用。我尝试删除按钮并将以下行放入 xml 中。我还尝试在代码中将 focusable 设置为 flase。

android:focusable="false"
android:focusableInTouchMode="false"

最佳答案

二元运算符 == 比较内存地址。

if(tempValues.getRequestStatus().equal("Accepted"))
{
holder.btnAccept.setEnabled(false);
holder.btnAccept.setEnabled(false);
}
else
{
holder.btnAccept.setEnabled(true);
holder.btnAccept.setEnabled(true);
}

关于 String 类:

equals() 方法比较 String 实例内部(在堆上)的“值”,无论两个对象引用是否引用同一个 String 实例。如果任意两个 String 类型的对象引用引用同一个 String 实例,那就太好了!如果两个对象引用引用两个不同的 String 实例..它没有什么区别。它是正在比较的每个 String 实例内的“值”(即:字符数组的内容)。

关于java - 根据值禁用 ListView 内的按钮 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com