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