1

私のアクティビティには、ボタンが 1 つあります。ボタンをクリックすると、 title & を含むカスタム ダイアログが表示されます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 に答える