2016-04-30 25 views
0

在第一個活動中,我打開了一個自定義對話框佈局中的按鈕(命名btIndividual)在listview內部。在那個自定義對話框中,我在listview中有一個文本和edittext字段,一個保存按鈕用於將數據發佈到服務器。現在我希望在將數據發佈到服務器之後,第一個活動中名爲btIndividual的按鈕將不可見。無法隱藏自定義對話框中的列表視圖中的按鈕Android

定製適配器的第一項活動:

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

自定義對話框佈局:

:從這裏我想禁用btIndividual按鈕發佈數據

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類

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

所以當你取消註釋'if'statement成'onPostExecute'方法發生了什麼? –

+0

按鈕不會從位置隱藏。沒有任何事情發生 –

回答

0

我想這個問題是在這裏:

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

您可以設置可見按鈕即使下方的條件爲真。

我建議修改的代碼是這樣的:

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

這不起作用,因爲我必須從適配器類獲取該按鈕的視圖,這是問題所在 –

相關問題