2015-05-08 30 views
0

我正在使用listview和baseadapter。每行列表視圖都有2個按鈕。 我在那個按鈕上設置事件。baseadapter中的AsyncTask

這是我的問題之前link ,這是我的代碼現在

public class customadapter extends BaseAdapter{  

     ArrayList<HashMap<String, String>> oslist; 
     Context context; 
     private Activity parentActivity; 
     private Button btnDelete; 
     private Button btnEdit; 
     AlertDialog.Builder alertDialogBuilder; 
     public String URL = "http://192.168.1.103:8080/exdar/api/registerItem/deleting"; 

     public customadapter(ArrayList<HashMap<String, String>> oslist,Context context, Activity parentactivity) { 
      System.out.println("skdjfhksdfjskfjhsdkjfh"); 
      this.context = context; 
      this.oslist = oslist; 
      this.parentActivity = parentactivity; 

     } 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub  
      return oslist.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return oslist.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

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

     LayoutInflater lif = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = lif.inflate(R.layout.listitem, null); 

     final TextView id = (TextView) convertView.findViewById(R.id.varId); 
     TextView noNota = (TextView) convertView.findViewById(R.id.varNoNota); 
     TextView senderName = (TextView) convertView.findViewById(R.id.varSenderName); 
     TextView totalAmount = (TextView) convertView.findViewById(R.id.varTotalAmount); 

     id.setText(oslist.get(position).get("id")); 
     noNota.setText(oslist.get(position).get("noNota")); 
     senderName.setText(oslist.get(position).get("senderName")); 
     totalAmount.setText(oslist.get(position).get("totalAmount"));  

     Button btnEdit = (Button) convertView.findViewById(R.id.btnEdit); 
     Button btnDelete = (Button) convertView.findViewById(R.id.btnDelete); 

      btnEdit.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        Toast.makeText(context, "Edit ditekan!", Toast.LENGTH_LONG).show(); 
        //Here perform the action you want    


       } 
      }); 
      btnDelete.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        final Dialog dialog = new Dialog(parentActivity); 
        dialog.setContentView(R.layout.yesnodialog); 
        dialog.setTitle("Delete"); 
        TextView text = (TextView) dialog.findViewById(R.id.rusurewanttodelete);     

        Button YES = (Button) dialog.findViewById(R.id.yes); 
        Button NO = (Button) dialog.findViewById(R.id.no); 
        YES.setOnClickListener(new OnClickListener() { 

         @Override 
         public void onClick(View v) { 
         String response = ""; 

         System.out.println(id.getText()); 


         // I ADD THIS CODE FROM HTTPUTILS NETWORKGET 

         HttpUtils networkGet = HttpUtils.getInstance(); 
         ArrayList<NameValuePair> parameter = new ArrayList<NameValuePair>(); 
         parameter.add(new BasicNameValuePair("id", (String) id.getText()));      
         try { 
          System.out.println("aaaaaaaaaaaaaaaa"); 
          System.out.println("URLURLURLURL = "+URL); 
          response = networkGet.postToHTTP(URL, parameter); 
         } catch (Exception e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 

         // UNTIL THIS 


          oslist.remove(position); 
          notifyDataSetChanged(); 
          dialog.dismiss(); 
          Toast.makeText(context, "Data Deleted.", Toast.LENGTH_LONG).show(); 
         } 
        }); 

        NO.setOnClickListener(new OnClickListener() {     
         @Override 
         public void onClick(View v) { 
          // TODO Auto-generated method stub 
          dialog.dismiss(); 
         } 
        }); 

        dialog.show(); 
       } 
      }); 
     return convertView; 
     } 
    } 

和我得到這個錯誤

enter image description here

任何人知道爲什麼我得到這個錯誤,並solusion?

+2

花花公子經歷這個鏈接http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception –

回答

1

檢查了這一點

HttpUtils networkGet = HttpUtils.getInstance(); 
         ArrayList<NameValuePair> parameter = new ArrayList<NameValuePair>(); 
         parameter.add(new BasicNameValuePair("id", (String) id.getText()));      
         try { 
          System.out.println("aaaaaaaaaaaaaaaa"); 
          System.out.println("URLURLURLURL = "+URL); 
          response = networkGet.postToHTTP(URL, parameter); 
         } catch (Exception e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 

這裏這條線

response = networkGet.postToHTTP(URL, parameter); 

是要求接入互聯網,它是在主線程。 所以把所有的網絡asyntask