如何使用布局inflater刷新数据?

时间:2017-01-22 04:11:00

标签: android android-layout

我要做的是在线性布局中充实卡片视图。

创建活动时没有任何内容,但是当我在edittext中输入网址时,会显示cardview。

但是当我在edittext中重新输入其他网址时,cardview不会改变。

我想知道如何刷新cardview或线性布局,这是我的cardview的父视图。

这是我的代码。

首先,我的htmlPareseTask的onPostExecute方法

 @Override
    protected void onPostExecute(List<String> strings) {
        LayoutInflater inflater=getLayoutInflater();
        View linkView=inflater.inflate(R.layout.cardview_link, parentLayout);

        TextView ogTitle = (TextView) linkView.findViewById(R.id.title_link);
        TextView ogDecription = (TextView) linkView.findViewById(R.id.description_link);
        TextView ogUrl = (TextView) linkView.findViewById(R.id.url_link);
        ImageView ogImage = (ImageView) linkView.findViewById(R.id.thumbnail_link);

        ogTitle.setText(strings.get(0));
        Glide.with(getApplicationContext()).load(strings.get(1)).into(ogImage);
        ogDecription.setText(strings.get(2));
        ogUrl.setText(strings.get(3));

        linkView.invalidate();



        super.onPostExecute(strings);

Tulsi的回答反映:

@Override
    protected void onPostExecute(List<String> strings) {
        if(linkView==null){
            LayoutInflater inflater=getLayoutInflater();
            linkView=inflater.inflate(R.layout.cardview_link, view);
            ogTitle = (TextView) linkView.findViewById(R.id.title_link);
            ogDecription = (TextView) linkView.findViewById(R.id.description_link);
            ogUrl = (TextView) linkView.findViewById(R. id.url_link);
            ogImage = (ImageView) linkView.findViewById(R.id.thumbnail_link);
        }

        ogTitle.setText(strings.get(0));
        Glide.with(getApplicationContext()).load(strings.get(1)).into(ogImage);
        ogDecription.setText(strings.get(2));
        ogUrl.setText(strings.get(3));

Tulsi的回答反映了第二次

  @Override
    protected void onPostExecute(List<String> strings) {
        if(linkView==null){
            LayoutInflater inflater=getLayoutInflater();
            linkView=inflater.inflate(R.layout.cardview_link, null);
            view.addView(linkView);
            ogTitle = (TextView) linkView.findViewById(R.id.title_link);
            ogDecription = (TextView) linkView.findViewById(R.id.description_link);
            ogUrl = (TextView) linkView.findViewById(R. id.url_link);
            ogImage = (ImageView) linkView.findViewById(R.id.thumbnail_link);
        }else
            {
                view.removeAllViews();
                view.addView(linkView);
            }

        ogTitle.setText(strings.get(0));
        Glide.with(getApplicationContext()).load(strings.get(1)).into(ogImage);
        ogDecription.setText(strings.get(2));
        ogUrl.setText(strings.get(3));


        super.onPostExecute(strings);
    }

1 个答案:

答案 0 :(得分:1)

每当你在editText中输入文本时,它都会继续onPostExecute(列出字符串)并在recyclerView中为新的CardView充气。所以我可能不会看到新插入的视图,因为它被以前的Cardview隐藏了。 它可以通过两种方式解决

  1. 假设 Variable 'currentButtonLocation' was written to, but never read linearLayoutinstance 你给cardView充气。只需调用remove方法清除即可 linearlayout LinearLayout
  2. 将视图作为全局变量检查是否为linearLayout.removeAllViews,然后只对新视图进行充气,否则只修改内容。
  3. 使用此

    Null
相关问题