我必须将从数据库查询的名称列表放入列表(而不是listview)。我可以通过使用自定义视图对linearlayout进行充气来实现。我创建了一个新类,其中有一个方法可以使用自定义视图来扩展布局。 在那个方法中,我已经实现了一个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的类中 有什么建议吗?
答案 0 :(得分: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);
}
}