【问题标题】:How to dynamically add LinearLayout in a Listview?如何在 Listview 中动态添加 LinearLayout?
【发布时间】:2018-05-02 13:21:49
【问题描述】:

我用自定义适配器创建了一个listview,我希望根据数据库条目动态添加以下结构。

LinearLayout (Vertical)
TextView 
LinearLayout (Horizontal)
TextView 
TextView  

----此文本视图将是动态的,可以是 2,3 或更多,具体取决于数据库

我编写了以下代码只是为了动态显示结构。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    final ViewHolder holder;
    if (convertView == null) {
        LayoutInflater mInflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        convertView = mInflater.inflate(R.layout.cinema_info_item, null);
        //convertView = mInflater.inflate(R.layout.cinema_info_item, parent, false);
        holder = new ViewHolder();

        holder.imageIV = (ImageView) convertView.findViewById(R.id.cinema_info_item_iv);
        holder.movieNameTv = (TextView) convertView.findViewById(R.id.cinema_info_item_movie_name_tv);
        holder.relativeLayout = (RelativeLayout) convertView.findViewById(R.id.relativeLayout);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
        // add this linearlayout dynamically for each listview item
        LinearLayout parent_linear = new LinearLayout(activity);

        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams (LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        layoutParams.setMargins(20, 5, 20, 5);
        parent_linear.setLayoutParams(layoutParams);
        parent_linear.setOrientation(LinearLayout.VERTICAL);
        parent_linear.setBackgroundColor(Color.BLACK);

        //children of parent linear layout
        TextView tvStatus = new TextView(activity);
        tvStatus.setText("status");

        LinearLayout TimeLinearLayout = new LinearLayout(activity);

        TimeLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
        TimeLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
        parent_linear.setBackgroundColor(Color.BLUE);

        parent_linear.removeAllViews();
        parent_linear.addView(tvStatus);
        parent_linear.addView(TimeLinearLayout);

        //children of layout2 LinearLayout
        TextView tv1 = new TextView(activity);
        tv1.setText("1");
        TextView tv2 = new TextView(activity);
        tv1.setText("2");
        TextView tv3 = new TextView(activity);
        tv1.setText("3");
        TextView tv4 = new TextView(activity);
        tv1.setText("4");

        TimeLinearLayout.removeAllViews();
        TimeLinearLayout.addView(tv1);
        TimeLinearLayout.addView(tv2);
        TimeLinearLayout.addView(tv3);
        TimeLinearLayout.addView(tv4);

    return convertView;
}

请告诉我为什么 linearlayout 没有显示
我试过了:

convertView.addView(LinearLayout);

但这不起作用,它在运行时不会在屏幕上显示线性布局。

【问题讨论】:

  • 请帮我解决这个问题
  • 请同时发布列表行项目布局,cinema_info_item.xml。

标签: android listview adapter


【解决方案1】:

首先调用 TimeLinearLayout.removeAllViews();然后尝试添加任何其他视图

【讨论】:

  • 我都试过了,把代码放在 if 条件之外,还调用 removeAllViews()。仍然,它不可见,我已经更新了上面的代码
猜你喜欢
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
相关资源
最近更新 更多