在我的活动中,我有一个按钮,当我点击按钮时,它会显示包含标题和按钮的自定义对话框。 ListView
。
我为ListView
设置了适配器,但未调用getView()
方法。我的数组是ArrayList<String>
&amp;它的大小是3。
这是我的代码。
在Activity.java ::
中 notification_btn = (Button) findViewById(R.id.notifications_btn);
notification_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Dialog dialog = new Dialog(Home.this,android.R.style.Theme_Translucent_NoTitleBar);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.notifications_layout);
ListView list = (ListView) dialog.findViewById(R.id.listView_notifications);
TextView title = (TextView) dialog.findViewById(R.id.dialogTitle);
TextView footer = (TextView) dialog.findViewById(R.id.notification_footer);
title.setText("Title");
NotificationAdapter adapter = new NotificationAdapter(Home.this,array);
list.setAdapter(adapter);
dialog.show();
}
});
NotificationAdapter.java ::
public class NotificationAdapter extends BaseAdapter{
ArrayList<String> items;
private Context context;
private LayoutInflater mInflater;
static class ViewHolder {
TextView text;
}
public NotificationAdapter(Context context, ArrayList<String> items) {
this.context = context;
this.items = items;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int arg0) {
return items.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
convertView = mInflater.inflate(R.layout.notifiation_row, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text_notification);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
try {
holder.text.setText(items.get(position));
} catch (Exception e) {
VLogger.getLogger().info("Exception occured :: "+e);
}
return convertView;
}
}
为什么不调用getView()
方法?我没有找到原因。请帮忙。
答案 0 :(得分:1)
只要将适配器设置为列表:
listview.setAdapter(adapter)
您必须通知适配器有关已更改的数据集,以便重新填充列表:
adapter.notifyDataSetChanged()