2016-04-30 12 views
0

In der ersten Aktivität habe ich Schaltfläche (Named btIndividual) in Listview von diesem einen benutzerdefinierten Dialogfeld Layout geöffnet. In diesem benutzerdefinierten Dialog habe ich ein Text- und Edittext-Feld in der Listenansicht und eine Schaltfläche zum Speichern der Daten auf dem Server. Jetzt möchte ich, dass nach dem Posten von Daten auf Server die Schaltfläche namens btIndividual in der ersten Aktivität wird unsichtbar.Schaltfläche kann nicht aus Listview in benutzerdefinierten Dialog Android

Individuelle Adapter für die erste Aktivität:

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     final ProductChoosed productChoosed = productChoosedAr.get(position); 


     convertView = View.inflate(SolutionActivity.this, R.layout.custom_solution_row, null); 
     ImageView categoryImageView = (ImageView) convertView.findViewById(R.id.categoryImageView); 
     TextView categoryNameTextView = (TextView) convertView.findViewById(R.id.categoryNameTextView); 
     productsListTextView = (TextView) convertView.findViewById(R.id.productsListTextView); 
     btIndividual = (Button) convertView.findViewById(R.id.btIndividual); 

     String catgoryImage = ""; 
     String isTradeProduct = productChoosed.isTradeProduct; 
     if(isTradeProduct.equals("0")){ 
      btIndividual.setVisibility(View.VISIBLE); 
      productsListTextView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        showTradDialog(position, productChoosedAr.get(position)); 
       } 
      }); 
     }else{ 
      btIndividual.setVisibility(View.GONE); 
     } 

     btIndividual.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
showIndividualTradDialog(position,productChoosedAr.get(position)); 
       individual_productChoosedAr.clear(); 
       myList.clear(); 
       idIndividual = ""; 
       mIndCount =1; 
       checkHideButton = position ; 
       checkButtonPosition = position; 
       idIndividual = productChoosedAr.get(position).categoryId; 
       GetIndividualProducts getIndividualProducts = new GetIndividualProducts(); 
       getIndividualProducts.execute(); 
       showDialog(); 
       Toast toast = Toast.makeText(getApplicationContext(),"Loading...",Toast.LENGTH_LONG); 
       toast.show(); 
      } 
}); 

Dialogfeld-Layout:

private void showDialog(){ 

    dialog1 = new Dialog(this); 
    final Dialog tradDialog = new Dialog(this, android.R.style.Theme_Light_NoTitleBar); 

    View view = getLayoutInflater().inflate(R.layout.trad_dialog_layout_individual, null); 
    tradDialog.setCanceledOnTouchOutside(false); 
    lv = (ListView) view.findViewById(R.id.productsListView); 
    RelativeLayout saveBtnLayout = (RelativeLayout) view.findViewById(R.id.saveBtnLayout); 
    // Change MyActivity.this and myListOfItems to your own values 
    clad = new CustomListAdapterDialog(SolutionActivity.this, individual_productChoosedAr); 

    lv.setAdapter(clad); 
    clad.notifyDataSetChanged(); 
    mCount = lv.getChildCount(); 
    saveBtnLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int getChildCount1 = lv.getChildCount(); 
      System.out.print(getChildCount1); 

      for (int i = 0; i < myList.size(); i++) { 
//      v = lv.getChildAt(i); 
//      etPrice = (EditText) v.findViewById(R.id.etPrice); 
       if(myList.get(i).toString().equals("")){ 
        ProductPrice = "NULL"; 
       }else { 
        ProductPrice = myList.get(i).toString(); 
       } 
//      if(ProductPrice.equals("")){ 
//       ProductPrice = "NULL"; 
//      } 
        productPriceAr.add(ProductPrice); 
       } 
      Toast toast = Toast.makeText(getApplicationContext(),"Please wait...",Toast.LENGTH_LONG); 
      toast.show(); 
      SendIndividualDatatoServer sendIndividualData = new SendIndividualDatatoServer(); 
      sendIndividualData.execute(); 
     } 
    }); 
    //lv.setOnItemClickListener(........); 

    dialog1.setContentView(view); 
    dialog1.show(); 

} 

AsyncTask Klasse für Daten aus, wo ich will Posting btIndividual Taste deaktivieren:

protected void onPostExecute(Void paramVoid) { 
     super.onPostExecute(paramVoid); 

     try { 
      String typeId = "", messageReceived = ""; 
      JSONObject localJSONObject = new JSONObject(this.sendDataResponse); 
      typeId = localJSONObject.getString("type_id"); 
      messageReceived = localJSONObject.getString("msg"); 
      if (typeId.equals("1")) { 

//if i reached here i want to disable that button 
//     if(checkHideButton == checkButtonPosition){ 
//      btIndividual.setVisibility(View.GONE); 
//       customSelectedProductsAdapter.notifyDataSetChanged(); 
//       customSelectedProductsAdapter.notifyDataSetInvalidated(); 
//     } 
       Toast toast = Toast.makeText(SolutionActivity.this,"Individual Data Posted",Toast.LENGTH_LONG); 
       toast.show(); 
       dialog1.dismiss(); 
       customSelectedProductsAdapter.notifyDataSetChanged(); 
       productPriceAr.clear(); 
       individual_productChoosedAr.clear(); 

      } else 
       Toast.makeText(SolutionActivity.this, messageReceived, Toast.LENGTH_SHORT).show(); 
      btIndividual.setVisibility(View.VISIBLE); 
     } catch (Exception localException) { 
      localException.printStackTrace(); 
      Toast.makeText(SolutionActivity.this, "Network Error Occured", Toast.LENGTH_SHORT).show(); 
     } 
+0

Also, was passiert, wenn Sie uncomment 'if'statement in' onPostExecute' Methode? –

+0

Schaltfläche wird nicht aus der Position unsichtbar. nichts passiert –

Antwort

0

Ich denke, das Problem hier ist:

} else 
Toast.makeText(SolutionActivity.this, messageReceived, Toast.LENGTH_SHORT).show(); 
btIndividual.setVisibility(View.VISIBLE); 

Sie legen die Schaltfläche sichtbar, auch wenn Ihr Zustand unter wahr ist.

Ich schlage vor, den Code so etwas zu ändern:

protected void onPostExecute(Void paramVoid) { 
    super.onPostExecute(paramVoid); 

    try { 

     //1. By default button is visible 
     btIndividual.setVisibility(View.VISIBLE); 

     String typeId = "", messageReceived = ""; 
     JSONObject localJSONObject = new JSONObject(this.sendDataResponse); 
     typeId = localJSONObject.getString("type_id"); 
     messageReceived = localJSONObject.getString("msg"); 
     if (typeId.equals("1")) { 

       if(checkHideButton == checkButtonPosition){ 

        //2. if condition is true - hide the button 
        btIndividual.setVisibility(View.GONE); 
        customSelectedProductsAdapter.notifyDataSetChanged(); 
        customSelectedProductsAdapter.notifyDataSetInvalidated(); 
       } 
      Toast toast = Toast.makeText(SolutionActivity.this,"Individual Data Posted",Toast.LENGTH_LONG); 
      toast.show(); 
      dialog1.dismiss(); 
      customSelectedProductsAdapter.notifyDataSetChanged(); 
      productPriceAr.clear(); 
      individual_productChoosedAr.clear(); 

     } else 
      Toast.makeText(SolutionActivity.this, messageReceived, Toast.LENGTH_SHORT).show(); 

     //3. it is not needed 
     //btIndividual.setVisibility(View.VISIBLE); 
    } catch (Exception localException) { 
     localException.printStackTrace(); 
     Toast.makeText(SolutionActivity.this, "Network Error Occured", Toast.LENGTH_SHORT).show(); 
    } 
+0

Das funktioniert nicht, weil ich die Ansicht der Schaltfläche von der Adapterklasse bekommen muss, die das Problem ist –

Verwandte Themen