在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>