在我的活动中,我有一个按钮,当我单击该按钮时,它会显示包含标题和
ListView
的自定义对话框。
我为
ListView
设置了适配器,但未调用 getView()
方法。我的数组是 ArrayList<String>
,其大小为 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()
方法?我没找到原因。请帮忙。
将适配器设置为列表后:
listview.setAdapter(adapter)
您必须通知适配器有关更改的数据集,以便它重新填充列表:
adapter.notifyDataSetChanged()
我来自2024年哈哈,我仍然遇到问题,解决方案是redfine“getitem”和“getcount”