1
我是Android開發人員的新手,我很難圍繞android listviews
進行包裝。我幾乎經歷了整個谷歌搜索,並嘗試每一個「可能」的解決方案,但沒有真正得到listview
,我很難解決這個問題。如何在列表視圖中禁用按鈕
當我點擊listview
項目中的complete_btn時,我想禁用特定的按鈕。
現在,在else {}
部分給我的空指針異常(它在if(converView == null)
部分罰款)。如果我刪除代碼,一切正常,但即使只是註釋掉監聽器中的所有內容也是行不通的。
如果在按下按鈕時彈出的警報對話框中單擊Yes,我想最終禁用該按鈕!有人可以幫助我嗎?
public View getView(final int position, View convertView, final ViewGroup parent) {
View itemView;
if (convertView == null) {
itemView = layoutInflater.inflate(R.layout.activity_selected_delivery_item, parent, false);
final Deliveryltem deliveryltemPosition = epicerieDelivery.selectedDeliveryItem.get(position);
icon = (ImageView) itemView.findViewById(R.id.selected_delivery_img);
name = (TextView) itemView.findViewById(R.id.selected_item_name);
phone_tx = (TextView) itemView.findViewById(R.id.selected_item_phone);
complete_btn = (Button) itemView.findViewById(R.id.selected_complete_btn);
if(deliveryltemPosition.order_taken_str.equals("2")){
complete_btn.setEnabled(false);
}
phone_tx.setText(deliveryltemPosition.recipient_phonenum);
complete_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((ListView) parent).performItemClick(v, position , 0);
try{
order_seq = deliveryltemPosition.order_seq;
position_sms = position;
Deliveryltem deliveryltemPosition1 = epicerieDelivery.selectedDeliveryItem.get(position);
String name = deliveryltemPosition1.recipient_name;
String phone = deliveryltemPosition1.recipient_phonenum;
AlertDialog dialog = createdialogBox_finish(name, phone, position);
dialog.show();
}catch (Exception e){
}
}
});
return itemView;
}else{
itemView = convertView;
if(epicerieDelivery.selectedDeliveryItem.size() != 0){
final Deliveryltem deliveryltemPosition = epicerieDelivery.selectedDeliveryItem.get(position);
name = (TextView) itemView.findViewById(R.id.selected_item_name);
phone_tx = (TextView) itemView.findViewById(R.id.selected_item_phone);
complete_btn = (Button) itemView.findViewById(R.id.selected_complete_btn);
if(deliveryltemPosition.order_taken_str.equals("2")){
complete_btn.setEnabled(false);
}
complete_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((ListView) parent).performItemClick(v, position , 0);
try{
order_seq = deliveryltemPosition.order_seq;
position_sms = position;
Deliveryltem deliveryltemPosition1 = epicerieDelivery.selectedDeliveryItem.get(position);
String name = deliveryltemPosition1.recipient_name;
String phone = deliveryltemPosition1.recipient_phonenum;
buttons.add(complete_btn);
AlertDialog dialog = createdialogBox_finish(name, phone, position);
dialog.show();
}catch (Exception e){
}
}
});
}
return convertView;
}}
private AlertDialog createdialogBox_finish(String name, String phone, int position1){
final String name_str = name;
final String phone_str = phone;
courier_id = selectedActivity2.courier_id;
int button_pos = position1;
final String message_finish = "message_content";
buttons.get(0).setEnabled(false);
buttons.clear();
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setMessage("배송을 완료하셨습니까?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try{
SmsManager smsManager = SmsManager.getDefault();
if (message_finish.length() > 60) {
ArrayList<String> contents = smsManager.divideMessage(message_finish);
for(int j = 0; j<contents.size(); j++){
smsManager.sendTextMessage(phone_str, null, contents.get(j), null, null);
}
} else {
smsManager.sendTextMessage(phone_str, null, message_finish, null, null);
}
}catch (Exception e){
}
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog dialog = builder.create();
return dialog;
}