2012-09-28 63 views
1

我必須將從數據庫查詢的名稱列表放入列表(而不是listview)中。我可以通過使用自定義視圖來擴展線性佈局來實現這一點。我創建了一個新類,其中有一個方法使用自定義視圖來擴展布局。 在這種方法中,我實現了一個onclicklistener,但它不工作。 代碼:onclicklistener不在方法內工作

public static void showPeopleInvitedList(Context context, View view, final LinearLayout layout) { 
    dbAdapter = new DatabaseHandler(context); 
    String[] ENTRIES = dbAdapter.getItems("user_friend_name"); 
    for (int i = 0; i < 5; i++) { 
     LayoutInflater inflator = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflator.inflate(R.layout.people, layout, false); 

     view.setId(layout.getChildCount() + 1); 
     params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 

     view.setLayoutParams(params); 
     view.setOnClickListener(myClickListener); 
     layout.addView(view, 0, params);  


    } 

    myClickListener = new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Log.d("click", "clicked"); 
      layout.removeView(v); 
     } 
    }; 
} 

但onclicklistener不工作。我在主要活動中調用此方法。此方法位於擴展了LinearLayout的類中。任何建議?

回答

1

您還沒有實例化myClickListener,因此您將視圖的onClickListener設置爲null。將其初始化移至for循環之前。

public static void showPeopleInvitedList(Context context, View view, final LinearLayout layout) { 
    dbAdapter = new DatabaseHandler(context); 
    String[] ENTRIES = dbAdapter.getItems("user_friend_name"); 

    myClickListener = new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Log.d("click", "clicked"); 
      layout.removeView(v); 
     } 
    }; 
    for (int i = 0; i < 5; i++) { 
     LayoutInflater inflator = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflator.inflate(R.layout.people, layout, false); 

     view.setId(layout.getChildCount() + 1); 
     params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 

     view.setLayoutParams(params); 
     view.setOnClickListener(myClickListener); 
     layout.addView(view, 0, params);  


    } 

}

+0

該死!非常感謝。我浪費了一個小時來解決這個問題。謝謝! – hshed