2016-01-22 96 views
2

我在ListView里面创建了编程的TextView项目,因为它已经做了一些下面的代码。但是没有得到想要的解决方案,所以请帮我解决我的问题。在andorid里创建listview里面的动态文本视图

这是我的

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; 
     } 

     } 
    } 

从上面的代码中我得到以下输出为图片 MY OUTPUT FROM ABOVE CODE

但我想这样的类型的输出的输出图像MY DESIRE THESE

从我的输出从我的上面的代码,所有的测试视图覆盖彼此,只有最后一个项目是可见的,这是我的第一张图片中的Number10

因此,朋友们,请帮我把短路从这些problem.Thanks :)

+0

从上面的代码和指定输出的输出完全变化..我不能共同涉及两个屏幕! – Stallion

+0

意思@Harry ...其实我想创建列表视图行中的多个textview ....在我的第一个图像中,我没有得到适当的解决方案.....第二个图像显示,我想要实现 –

回答

0

此示例代码可以帮助你

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"); 
    } 
} 
+0

谢谢你的回答...它似乎不是答案,我正在寻找...任何方式感谢您的宝贵努力.. –

1

喜尝试这种方式,它可以帮助你..

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); 
    }    
+0

..感谢您的回答...我检查它...如果它可行对于我而言,我会很乐意将回答者标记为正确的..感谢您的努力 –

+0

您的解决方案相当有用,但兄弟...因为它给了我VERTICAL输出...我想要它应该给我HORIZONTAL输出方式一个接一个 –

+0

只是改变相对的布局规则,它会工作 – MPG