Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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、JSON)_Android_Json_Android Layout - Fatal编程技术网

如何在现有布局中添加动态布局(Android、JSON)

如何在现有布局中添加动态布局(Android、JSON),android,json,android-layout,Android,Json,Android Layout,我有一个显示JSON数据的应用程序。我在相对布局的右侧和左侧的动态文本视图中显示数据。现在我想在现有布局中添加此布局,以便在textview上应用OnClickListener。现在,我正在将数据转换成一个字符串,然后将该字符串设置为布局左侧和右侧的静态文本视图 如何根据我从JSON获取的数据数量动态生成textview? for (Region object : temp.phonelist.regionList) { if (obj

我有一个显示JSON数据的应用程序。我在相对布局的右侧和左侧的动态文本视图中显示数据。现在我想在现有布局中添加此布局,以便在textview上应用
OnClickListener
。现在,我正在将数据转换成一个字符串,然后将该字符串设置为布局左侧和右侧的静态文本视图

如何根据我从JSON获取的数据数量动态生成textview?

 for (Region object : temp.phonelist.regionList)

            {
                if (object.getCCInfoShortDesc() != null ||  !(object.getCCInfoShortDesc().equals(null)))
                {
                    Log.i("nullexception", "nullexception");

                    holder.tvDescription.setText(object.getCCInfoShortDesc());
                    holder.tvDescription.setVisibility(View.VISIBLE);
                }else {
                    Log.i("nullexception1", "nullexception1");
                    holder.tvDescription.setVisibility(View.GONE);
                }


                leftContent += object.getCCInfoLeft() + ":" + "\n";
                rightContent += object.getCCInfoRight()  + "\n";

            }
            Log.i("lefftcontent", leftContent);
            Log.i("rightcontent", rightContent);

            if (leftContent != null) {
                holder.tvData2.setText(leftContent);
                holder.tvData2.setVisibility(View.VISIBLE);
            } 
            if (rightContent != null) {
                holder.tvData1.setText(rightContent);
                holder.tvData1.setVisibility(View.VISIBLE);
            } 
您需要创建
TextView
,并在每次对forloop进行迭代时将其添加到
父布局中。因此,对于
temp.phonelist.regionList

示例:

 for (Region object : temp.phonelist.regionList)
 {
     TextView tx = new TextView(context); //creating a new instance if textview
     //yourstuff goes here
     tx.setText(text_you_want);
     yourView.addView(tx); //this is to add the textView on each iteration

 }

你可以这样做

  final int Count = < Number of TextViews>; // total number of textviews to add

   final TextView[] TextViewsARR = new TextView[N]; // create an empty array;

   for (int i = 0; i < Count; i++) {
   // create a new textview
   final TextView rowTextView = new TextView(this);

   // set some properties of rowTextView or something
   rowTextView.setText("This is row #" + i);

   // add the textview to the linearlayout
   myLinearLayout.addView(rowTextView);

  // save a reference to the textview for later
    TextViewsARR [i] = rowTextView;
  }
final int Count=;//要添加的文本视图总数
最终文本视图[]文本视图sar=新文本视图[N];//创建一个空数组;
for(int i=0;i
  • 下面的示例动态生成了一个
    复选框
    ,如果您愿意的话 请注意,我正在根据
    光标计数生成
    复选框
    。 你可以根据自己的需要调整这棵树苗
  • 使用
    texview
  • 给出任何布局,如
    线性
    相对
    等,并生成视图
    动态地


快照


首先,您需要在布局中添加视图。。。就像你可以尝试使用线性布局或水平布局。。。然后将动态文本视图附加/添加到该布局

实际上,你可以这样做

packageButtons = new ArrayList<TextView>(); // Create your textview arraylist like this
        for(int a = 0; a < your_text_view_from_json.size(); a++){

               final TextView rowTextView;
               rowTextView = new TextView(getApplicationContext());
               rowTextView.setText(taxi_type_spin.get(a).taxi_type);
               rowTextView.setTextSize(15);
               rowTextView.setTextColor(getResources().getColor(R.color.white));
               LinearLayout.LayoutParams lparam = new LinearLayout.LayoutParams(0,
                       LinearLayout.LayoutParams.WRAP_CONTENT, 1);
               //rowTextView.setPadding(0, 0, 0, 0);      
               packageButtons.add(rowTextView);
               rowTextView.setLayoutParams(lparam);
               rowTextView.setId(a);
               final int b = a;
               // get value of clicked item over here .. 

               rowTextView.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    Button btn = (Button)v;
                    String get_value = btn.getText().toString();
                    //Toast.makeText(getApplicationContext(), "Button name is : " + get_value + " AND ID IS : " + rowTextView.getId(), Toast.LENGTH_LONG).show();
                    if(taxi_type_spin.get(b).taxi_type.equalsIgnoreCase(Utils.Hourly_Package))
                    {
                        setTaxiType(rowTextView.getId(),true);
                        ll_spin.setVisibility(View.VISIBLE);

                    }
                    else
                    {
                        setTaxiType(rowTextView.getId(),false);
                        ll_spin.setVisibility(View.GONE);
                    }
                    setSelectedButtonColor(b);

                }
            });

              // add the textview to the linearlayout
              myLinearLayout.addView(rowTextView);
packageButtons=new ArrayList();//像这样创建textview阵列列表
对于(int a=0;a
注意行文本视图..这是附加到XML文件的默认视图

希望有帮助!

私有void setLayout(LinearLayout,
private void setLayout(LinearLayout llayout,
        final ArrayList<String> items) {

    for (int i = 0; i < items.size(); i++) {
        LinearLayout row = null;
        LayoutInflater li = getLayoutInflater();
        row = (LinearLayout) li.inflate(R.layout.custom_item,
                null);

        ImageView image = (ImageView) row.findViewById(R.id.image);                 

        llayout.addView(row);
    }
}
最终阵列列表项目){ 对于(int i=0;i
我建议您使用ArrayList,因为类java.util.ArrayList提供了可调整大小的数组,这意味着可以动态地在列表中添加和删除项

并从ArrayList中获取如下值:

for(int i=0; i<arrayList.size(); i++)
        {             
           textName.setText(object.getName());             
        } 

for(inti=0;i这是您的解决方案这样做,采用一种布局(线性或相对)并动态添加控件

    LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    for (int i = 0; i < 4; i++)
    {

            TextView txtDemo = new TextView(getActivity());
            txtDemo .setTextSize(16);
            txtDemo .setLayoutParams(lp);
            txtDemo .setId(i);
            lp.setMargins(0, 10, 0, 0);
            txtDemo .setPadding(20, 10, 10, 10);
            txtDemo .setText("Text View"+ i);
            linearlayout.addView(txtDemo );

        }
    }
LayoutParams lp=新的LayoutParams(LayoutParams.MATCH\u父级,LayoutParams.WRAP\u内容);
对于(int i=0;i<4;i++)
{
TextView txtDemo=新的TextView(getActivity());
txtDemo.setTextSize(16);
txtDemo.setLayoutParams(lp);
txtDemo.setId(i);
lp.setMargins(0,10,0,0);
设置填充(20,10,10,10);
setText(“文本视图”+i);
linearlayout.addView(txtDemo);
}
}
for(int i=0; i<arrayList.size(); i++)
        {             
           textName.setText(object.getName());             
        } 
    LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    for (int i = 0; i < 4; i++)
    {

            TextView txtDemo = new TextView(getActivity());
            txtDemo .setTextSize(16);
            txtDemo .setLayoutParams(lp);
            txtDemo .setId(i);
            lp.setMargins(0, 10, 0, 0);
            txtDemo .setPadding(20, 10, 10, 10);
            txtDemo .setText("Text View"+ i);
            linearlayout.addView(txtDemo );

        }
    }