Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:SimpleAdapter notifyOnDataSetChanged不会激发getView_Java_Android_Listview_Simpleadapter - Fatal编程技术网

Java Android:SimpleAdapter notifyOnDataSetChanged不会激发getView

Java Android:SimpleAdapter notifyOnDataSetChanged不会激发getView,java,android,listview,simpleadapter,Java,Android,Listview,Simpleadapter,标题几乎说明了一切。我有一个listview,它由一个简单的适配器和一个xml布局填充,该布局根据listview项中的行数进行更改。当我向活动中的一个项目添加数据时,调用notifyondatasetchanged不会更新列表,但是如果我退出活动并返回所有内容,则看起来应该是这样的。当我刷新适配器时,getview也会更新,我需要做什么 public AlarmListAdapter(Context context, ArrayList<HashMap<String, St

标题几乎说明了一切。我有一个listview,它由一个简单的适配器和一个xml布局填充,该布局根据listview项中的行数进行更改。当我向活动中的一个项目添加数据时,调用notifyondatasetchanged不会更新列表,但是如果我退出活动并返回所有内容,则看起来应该是这样的。当我刷新适配器时,getview也会更新,我需要做什么

    public AlarmListAdapter(Context context, ArrayList<HashMap<String, String>> list, int textViewResourceId, String[] fields, int[] textViewId) {
    super(context, list, textViewResourceId, fields, textViewId);
    this.list = list;
    this.context = context;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

View v = convertView;
if (v == null) {
    LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    v = vi.inflate(R.layout.alarm_list_item, null);
}


if(list.get(position).get("alert") == null){    
    v.findViewById(R.id.ListViewItemSub).setVisibility(View.GONE);
}

return super.getView(position, convertView, parent);

}


public void forceReload(){
    notifyDataSetChanged();
}

您可以尝试
setListAdapter(您的适配器)

listview.requestLayout()

如果这些都不起作用,那么您也可以尝试通过滚动刷新listview,因为一旦滚动listview,就会调用getView()函数。

刷新适配器(您的第一个建议)起作用。我怎么没想到呢!?!谢谢!
        addCustomAlertButton = (Button)pView.findViewById(R.id.AddCustomAlertButton);
    addCustomAlertButton.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            arrayList.get((int) customAlertId).setAlertDialog(customAlertInput.getText().toString());
            Toast.makeText(EditAlarmsActivity.this, "Custom Alert Added", Toast.LENGTH_SHORT).show();
            updateListArray();
            pw.dismiss();
        }