Android:getView不会在自定义适配器中调用

时间:2012-08-14 11:36:53

标签: android adapter customdialog

在我的活动中,我有一个按钮,当我点击按钮时,它会显示包含标题和按钮的自定义对话框。 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()方法?我没有找到原因。请帮忙。

1 个答案:

答案 0 :(得分:1)

只要将适配器设置为列表:

listview.setAdapter(adapter)

您必须通知适配器有关已更改的数据集,以便重新填充列表:

adapter.notifyDataSetChanged()