Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Android ListView没有';在notifyDataSetChanged之后,不能直观地更新其内容_Android_Listview_Adapter_Onstart - Fatal编程技术网

Android ListView没有';在notifyDataSetChanged之后,不能直观地更新其内容

Android ListView没有';在notifyDataSetChanged之后,不能直观地更新其内容,android,listview,adapter,onstart,Android,Listview,Adapter,Onstart,我有一个静态的项目数组,它被设置为listview,我可以从另一个活动中修改它(向其中添加更多的项目)。因此,当我回到第一个活动时,我必须用新项目刷新listview的内容 我是通过:onStart()方法中的adapter.notifyDataSetChanged()来实现的,当然,我会验证是否必须这样做 问题是,只有当我稍微滚动列表时,我才能看到我的listview发生了变化 有什么问题吗 LE: 解决方案是在更改活动之前设置listview.invalidateViews(),当我返回到第

我有一个静态的项目数组,它被设置为listview,我可以从另一个活动中修改它(向其中添加更多的项目)。因此,当我回到第一个活动时,我必须用新项目刷新listview的内容

我是通过:
onStart()
方法中的
adapter.notifyDataSetChanged()
来实现的,当然,我会验证是否必须这样做

问题是,只有当我稍微滚动列表时,我才能看到我的listview发生了变化

有什么问题吗

LE: 解决方案是在更改活动之前设置listview.invalidateViews(),当我返回到第一个活动时,通知适配器终止该活动

LE@vortex:

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

    if (convertView == null) {
        convertView = inflater.inflate(row, parent, false);
    }


    TextView tvAuthor = (TextView) ViewHolder.get(convertView, R.id.authorText);
    TextView tvDate = (TextView) ViewHolder.get(convertView,R.id.dateText);
    TextView tvCategory = (TextView) ViewHolder.get(convertView,R.id.categoryText);
    TextView tvTitle = (TextView) ViewHolder.get(convertView,R.id.titleText);
    TextView tvContent = (TextView) ViewHolder.get(convertView,R.id.contentText);
    TextView tvNoComment = (TextView) ViewHolder.get(convertView,R.id.noComments);
   WebView sv_banner = (WebView) ViewHolder.get(convertView,R.id.wv_imageBanner);

    objBean = items.get(position);


    sv_banner.getSettings().setJavaScriptEnabled(true);
    sv_banner.getSettings()
            .setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
    sv_banner.getSettings().setLightTouchEnabled(true);
    sv_banner.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    sv_banner.getSettings().setPluginState(WebSettings.PluginState.ON);


    if ((position + 1) % 3 == 0) {
        if (sv_banner != null && null != objBean.getBanner_img_url() && objBean.getBanner_img_url().trim()
                .length() > 0) {
            sv_banner.setVisibility(View.VISIBLE);
            sv_banner.loadUrl(objBean.getBanner_img_url().toString());
            sv_banner.setFocusable(false);
        }
    } else {
        sv_banner.setVisibility(View.GONE);
    }


    sv_banner.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(objBean.getBanner_url().toString()));
                activity.startActivity(intent);
                return true;
            }
            return false;
        }
    });

    if (tvAuthor != null && null != objBean.getAuthor()
            && objBean.getAuthor().trim().length() > 0) {
        tvAuthor.setText(Html.fromHtml(objBean.getAuthor()));
    }

    if (tvNoComment != null && null != objBean.getNoComments()
            && objBean.getNoComments().trim().length() > 0) {
        int nrComent = Integer.valueOf(objBean.getNoComments());

        if (nrComent == 0) {
            tvNoComment.setText("");
        } else {
            tvNoComment.setText(Html.fromHtml(objBean.getNoComments()) + "  comments");
        }
    }


    if (tvDate != null && 0 != objBean.getPost_date()
            && objBean.getPost_date() > 0) {
        tvDate.setText(Html.fromHtml(String.valueOf(dateFormat.format(objBean.getPost_date()))));
    }

    if (tvCategory != null && null != objBean.getCategory()
            && objBean.getCategory().trim().length() > 0) {
        tvCategory.setText(Html.fromHtml(objBean.getCategory()).toString());
    }

    if (tvTitle != null && null != objBean.getTitle()
            && objBean.getTitle().trim().length() > 0) {
        tvTitle.setText(Html.fromHtml(objBean.getTitle()).toString());
    }

    if (tvContent != null && null != objBean.getContent()
            && objBean.getContent().trim().length() > 0) {
        String miniText = html2text(objBean.getContent());
        Log.i("Content", "MiniText = " + miniText);
        if (miniText.length() < 150) {
            String finalMiniText = miniText.substring(0, miniText.length());
            tvContent.setText(finalMiniText + "...");
        } else {
            String finalMiniText = miniText.substring(0, 150);
            tvContent.setText(finalMiniText + "...");
        }
    }


    if (position == 0) {

        RelativeLayout child = (RelativeLayout) convertView.findViewById(R.id.layoutNewsForex);
        child.setBackgroundResource(R.drawable.list_shape_corners);
        RelativeLayout.LayoutParams head_params = (RelativeLayout.LayoutParams) child.getLayoutParams();
        head_params.setMargins(18, 18, 18, 0); //substitute parameters for left, top, right, bottom
        child.setLayoutParams(head_params);

    } else {
        RelativeLayout child = (RelativeLayout) convertView.findViewById(R.id.layoutNewsForex);
        child.setBackgroundColor(Color.parseColor("#ebebeb"));
        RelativeLayout.LayoutParams head_params = (RelativeLayout.LayoutParams) child.getLayoutParams();
        head_params.setMargins(18, 0, 18, 0); //substitute parameters for left, top, right, bottom
        child.setLayoutParams(head_params);
    }


    return convertView;

}
public View getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=充气机。充气(世界其他地区,父级,错误);
}
TextView tvAuthor=(TextView)ViewHolder.get(convertView,R.id.authorText);
TextView-tvDate=(TextView)ViewHolder.get(convertView,R.id.dateText);
TextView tvCategory=(TextView)ViewHolder.get(convertView,R.id.categoryText);
TextView-tvTitle=(TextView)ViewHolder.get(convertView,R.id.titleText);
TextView tvContent=(TextView)ViewHolder.get(convertView,R.id.contentText);
TextView-tvNoComment=(TextView)ViewHolder.get(convertView,R.id.noComments);
WebView sv_banner=(WebView)ViewHolder.get(convertView,R.id.wv_imageBanner);
objBean=items.get(位置);
sv_banner.getSettings().setJavaScriptEnabled(true);
sv_banner.getSettings()
.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_列);
sv_banner.getSettings().setLightTouchEnabled(true);
sv_banner.setScrollBarStyle(视图。滚动条在覆盖层内);
sv_banner.getSettings().setPluginState(WebSettings.PluginState.ON);
如果((位置+1)%3==0){
if(sv_banner!=null&&null!=objBean.getBanner_img_url()&&objBean.getBanner_img_url().trim()
.length()>0){
sv_banner.setVisibility(视图可见);
sv_banner.loadUrl(objBean.getBanner_img_url().toString());
sv_banner.setFocusable(假);
}
}否则{
sv_banner.setVisibility(视图已消失);
}
sv_banner.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
if(event.getAction()==MotionEvent.ACTION\u UP){
Intent Intent=newintent(Intent.ACTION_视图,Uri.parse(objBean.getBanner_url().toString());
活动。开始触觉(意图);
返回true;
}
返回false;
}
});
if(tvAuthor!=null&&null!=objBean.getAuthor()
&&objBean.getAuthor().trim().length()>0){
tvAuthor.setText(Html.fromHtml(objBean.getAuthor());
}
if(tvNoComment!=null&&null!=objBean.getNoComments()
&&objBean.getNoComments().trim().length()>0){
int nrComent=Integer.valueOf(objBean.getNoComments());
如果(nrComent==0){
tvNoComment.setText(“”);
}否则{
tvNoComment.setText(Html.fromHtml(objBean.getNoComments())+“comments”);
}
}
if(tvDate!=null&&0!=objBean.getPost_date()
&&objBean.getPost_date()>0){
tvDate.setText(Html.fromHtml(String.valueOf(dateFormat.format(objBean.getPost_date())));
}
if(tvCategory!=null&&null!=objBean.getCategory()
&&objBean.getCategory().trim().length()>0){
tvCategory.setText(Html.fromHtml(objBean.getCategory()).toString());
}
if(tvTitle!=null&&null!=objBean.getTitle()
&&objBean.getTitle().trim().length()>0){
tvTitle.setText(Html.fromHtml(objBean.getTitle()).toString());
}
if(tvContent!=null&&null!=objBean.getContent()
&&objBean.getContent().trim().length()>0){
字符串miniText=html2text(objBean.getContent());
Log.i(“内容”,“MiniText=“+MiniText”);
if(miniText.length()<150){
字符串finalMiniText=miniText.substring(0,miniText.length());
tvContent.setText(finalMiniText+“…”);
}否则{
String finalMiniText=miniText.substring(0,150);
tvContent.setText(finalMiniText+“…”);
}
}
如果(位置==0){
RelativeLayout子项=(RelativeLayout)convertView.findViewById(R.id.layoutNewsForex);
子.挫折背景资源(R.可绘制.列表\形状\角);
RelativeLayout.LayoutParams head_params=(RelativeLayout.LayoutParams)child.getLayoutParams();
head_params.setMargins(18,18,18,0);//将参数替换为left、top、right和bottom
child.setLayoutParams(头参数);
}否则{
RelativeLayout子项=(RelativeLayout)convertView.findViewById(R.id.layoutNewsForex);
child.setBackgroundColor(Color.parseColor(“#ebebebebeb”);
RelativeLayout.LayoutParams head_params=(RelativeLayout.LayoutParams)child.getLayoutParams();
head_params.setMargins(18,0,18,0);//将参数替换为left、top、right和bottom
child.setLayoutParams(头参数);
}
返回视图;
}

另外,此适配器正在扩展ArrayAdapter。

解决方案是在更改“活动”之前设置listview.invalidateViews(),当我返回到第一个“活动”时,通知适配器结束此操作。

此方法应能工作。在
getView
方法中有什么代码?我编辑了它并添加了请求的代码,但正如我所说的,我使用listview.invalidateViews()成功地使它工作。如果您有更多的信息要添加,我洗耳恭听:)getView方法没有问题,所以奇怪的是它在您的情况下不起作用。虽然我会尝试使用
add的
方法