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

问题描述 投票:0回答:2

在我的活动中,我有一个按钮,当我单击该按钮时,它会显示包含标题和

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()
方法?我没找到原因。请帮忙。

android adapter customdialog
2个回答
0
投票

将适配器设置为列表后:

listview.setAdapter(adapter)

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

adapter.notifyDataSetChanged()

0
投票

我来自2024年哈哈,我仍然遇到问题,解决方案是redfine“getitem”和“getcount”

© www.soinside.com 2019 - 2024. All rights reserved.