2012-09-28 30 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