在android的listview中创建动态textview

在android的listview中创建动态textview,android,listview,textview,baseadapter,Android,Listview,Textview,Baseadapter,我正在列表视图项中以编程方式创建文本视图,因为它已经完成了以下一些代码。但没有得到所需的解决方案,因此请帮助我解决问题 这是我的课 package com.tv.ravindra; /** * Created by Ravindra on 22/01/16. */ public class DemoClass extends Activity { ListView list_demo; @Override protected void onCreate(Bun

我正在
列表视图
项中以编程方式创建
文本视图
,因为它已经完成了以下一些代码。但没有得到所需的解决方案,因此请帮助我解决问题

这是我的

package com.tv.ravindra;

/**
 * Created by Ravindra  on 22/01/16.
 */
public class DemoClass extends Activity {

    ListView list_demo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.demo);

        list_demo = (ListView) findViewById(R.id.list_demo);

        ArrayList<String> arrayList = new ArrayList<String>();
        arrayList.add("One");
        arrayList.add("Two");
        arrayList.add("Three");
        arrayList.add("Four");

        DemoAdapter adapter = new DemoAdapter(DemoClass.this,arrayList);

        list_demo.setAdapter(adapter);
    }


    public class DemoAdapter extends BaseAdapter
    {

        Activity activity;
        ArrayList<String> arrayList =  new ArrayList<String>();

        public DemoAdapter(Activity activity,ArrayList<String> arrayList)
        {

            this.activity = activity;
            this.arrayList = arrayList;

        }
        @Override
        public int getCount() {
            return arrayList.size();
        }

        @Override
        public Object getItem(int position) {
            return position;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }


        public class ViewHolder {

            TextView header_text_tv;
            RelativeLayout child_ll;

        }


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

            final ViewHolder _viewHolder;
            if (convertView == null) {


                _viewHolder = new ViewHolder();
                LayoutInflater _layInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = _layInflater.inflate(R.layout.demo_item, null);

                _viewHolder.header_text_tv = (TextView)convertView.findViewById(R.id.header_text_tv);
                _viewHolder.child_ll = (RelativeLayout)convertView.findViewById(R.id.child_ll);


                convertView.setTag(_viewHolder);


            } else {
                _viewHolder = (ViewHolder) convertView.getTag();
            }

            _viewHolder.header_text_tv.setText(arrayList.get(position));


            for(int i=0;i<=10;i++)
            {
                TextView msg = new TextView(activity);
                msg.setBackgroundColor(activity.getResources().getColor(R.color.bg_blue_color));
                msg.setText("Number "+i);
                msg.setPadding(10, 10, 10, 10);
                msg.setTextColor(getResources().getColor(R.color.white));
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
                params.setMargins(10, 10, 10, 10);
                msg.setLayoutParams(params);

                _viewHolder.child_ll.addView(msg);
            }

            return convertView;
        }
      }
    }
package com.tv.ravindra;
/**
*拉文德拉于2016年1月22日创作。
*/
公共类DemoClass扩展活动{
列表视图列表演示;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.demo);
list\u demo=(ListView)findViewById(R.id.list\u demo);
ArrayList ArrayList=新的ArrayList();
arrayList.添加(“一”);
arrayList.添加(“两个”);
arrayList.添加(“三”);
arrayList.添加(“四”);
DemoAdapter=新的DemoAdapter(DemoClass.this,arrayList);
列表\u demo.setAdapter(适配器);
}
公共类DemoAdapter扩展了BaseAdapter
{
活动;
ArrayList ArrayList=新的ArrayList();
公共DemoAdapter(活动活动,ArrayList ArrayList)
{
这个。活动=活动;
this.arrayList=arrayList;
}
@凌驾
public int getCount(){
返回arrayList.size();
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
公共类视图持有者{
文本视图标题\文本\电视;
亲子关系;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终视图持有者_视图持有者;
if(convertView==null){
_viewHolder=新的viewHolder();
LayoutInflater\u layInflater=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
convertView=\u layInflater.充气(R.layout.demo\u项,空);
_viewHolder.header\u text\u tv=(TextView)convertView.findViewById(R.id.header\u text\u tv);
_viewHolder.child\u ll=(RelativeLayout)convertView.findViewById(R.id.child\u ll);
convertView.setTag(_viewHolder);
}否则{
_viewHolder=(viewHolder)convertView.getTag();
}
_viewHolder.header\u text\u tv.setText(arrayList.get(position));

对于(inti=0;i,此示例代码可能会帮助您

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

    view = inflateIfRequired(view, position, parent);
    bind(getItem(position), view);

    return view;
}

private void bind(Eddystone eddystone, View view) {

    ViewHolder holder = (ViewHolder) view.getTag();

    String name = StringToHex.convertHexToString(eddystone.instance);

    holder.macTextView.setText("");
    holder.rssiTextView.setText("");
    holder.eddystoneNamespaceTextView.setText("");
    holder.eddystoneInstanceIdTextView.setText("");
}

private View inflateIfRequired(View view, int position, ViewGroup parent) {

    if (view == null) {
        view = inflater.inflate(R.layout.item, null);
        view.setTag(new ViewHolder(view));
    }

    return view;
}

static class ViewHolder {

    final TextView macTextView;
    final TextView rssiTextView;
    final TextView namespace;
    final TextView instanceId;

    ViewHolder(View view) {
        macTextView = (TextView) view.findViewWithTag("mac");
        rssiTextView = (TextView) view.findViewWithTag("rssi");
        namespace = (TextView) view.findViewWithTag("namespace");
        instanceId = (TextView) view.findViewWithTag("instance_id");
    }
}

嗨,试试这个方法,它可能会对你有帮助

   RelativeLayout layout = (RelativeLayout)findViewById(R.id.layout);

    Random rnd = new Random();
    int prevTextViewId = 0;     
    for(int i = 0; i < 10; i++)
    {                       
        final TextView textView = new TextView(this);
        textView.setText("Text "+i);     
        int curTextViewId = prevTextViewId + 1;
        textView.setId(curTextViewId);
        final RelativeLayout.LayoutParams params = 
            new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 
                                            RelativeLayout.LayoutParams.WRAP_CONTENT);

        params.addRule(RelativeLayout.ALIGN_RIGHT, prevTextViewId);
        textView.setLayoutParams(params);

        prevTextViewId = curTextViewId;
        layout.addView(textView, params);
    }              
RelativeLayout布局=(RelativeLayout)findViewById(R.id.layout);
随机rnd=新随机();
int-prevTextViewId=0;
对于(int i=0;i<10;i++)
{                       
最终文本视图文本视图=新文本视图(本);
textView.setText(“Text”+i);
int CurtTextViewId=prevTextViewId+1;
setId(curTextViewId);
最终RelativeLayout.LayoutParams参数=
新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_父级,
RelativeLayout.LayoutParams.WRAP_内容);
params.addRule(RelativeLayout.ALIGN_RIGHT,prevTextViewId);
textView.setLayoutParams(参数);
prevTextViewId=CurtTextViewId;
layout.addView(文本视图,参数);
}              
在onCreate()方法中:

List arrayList=new arrayList();
arrayList.添加(“一”);
arrayList.添加(“两个”);
arrayList.添加(“三”);
arrayList.添加(“四”);
ListViewAdapter=新的ListViewAdapter(DemoClass.this,arrayList);
列表\u demo.setAdapter(适配器);
您可以使用自定义适配器(BaseAdapter)根据列表视图中的数据添加TextView

public class ListViewAdapter extends BaseAdapter {

    Context context;
    TextView contact_number;
    List<String> arrayList;

    DataAdapter(Context c, List<String> arrayList) {
        this.context = c;
    this.arrayList=arrayList;
    }

    @Override
    public int getCount() {
        return arrayList.size();

    }

    @Override
    public Object getItem(int position) {
        return arrayList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

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

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.single_row, parent, false);

        textView = (TextView) row.findViewById(R.id.textView);

        textView.setText(arrayList.get(position));

        return row;

    }
}
公共类ListViewAdapter扩展了BaseAdapter{
语境;
TextView联系人号码;
列表数组列表;
DataAdapter(上下文c,列表arrayList){
this.context=c;
this.arrayList=arrayList;
}
@凌驾
public int getCount(){
返回arrayList.size();
}
@凌驾
公共对象getItem(int位置){
返回arrayList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、最终视图组父视图){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图行=充气机。充气(R.layout.single_row,parent,false);
textView=(textView)row.findViewById(R.id.textView);
setText(arrayList.get(position));
返回行;
}
}
您还可以创建一个布局文件,用于生成自定义TextViewassingle_row.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20dp"/>

</LinearLayout>


以上代码的输出和设计的输出完全不同..我不能同时关联两个屏幕!!意思是@Harry…实际上我想在listview行中创建多个textview…在我的第一张图片中,我没有得到正确的解决方案..第二张图片显示我想要实现的内容感谢您的回答…似乎不是这样答案,我正在寻找…无论如何感谢你的宝贵努力…感谢你的回答…我正在检查它…如果它对我可行,我会很高兴地将answeer标记为正确的…感谢你的努力你的解决方案非常有用,但兄弟…因为它给了我垂直输出…我想要的是它应该给我水平输出的方式e在另一个之后,只需将相对布局规则更改为正确,它将起作用Hello bro@MPG…我没有从您的上述代码中获得所需的解决方案…请看这些图片,我从您的代码中获得了输出,因为我已经发布了我问题中的第二个图片。请看它
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20dp"/>

</LinearLayout>