1

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

4

1 回答 1

0

将适配器设置为列表后:

listview.setAdapter(adapter)

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

adapter.notifyDataSetChanged()
于 2012-10-29T11:13:42.383 回答