2013-12-10 3 views
0

Я пытаюсь создать динамический экран, содержащий «текстовое изображение», «текст», «кнопка» и «список». Я пытаюсь добавить то, что написано в edittext, к моему списку. Я не получаю никаких ошибок, и я могу видеть добавленные элементы внутри моего ArrayList, когда я отлаживаю код. Но listview показывает только самый первый элемент, добавленный в список.Динамически добавленный ListView показывает только первый элемент

  LayoutParams layoutMatchParent = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
      LayoutParams layoutWrapContent = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      LayoutParams layoutMatchParentWidth = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

      ScrollView scrollView = new ScrollView(this); 

      LinearLayout linearLayout = new LinearLayout(this); 
      linearLayout.setOrientation(LinearLayout.VERTICAL); 

      scrollView.addView(linearLayout); 
      setContentView(scrollView, layoutMatchParent); 

      LinearLayout vgMul=new LinearLayout(this); 
      vgMul.setOrientation(LinearLayout.VERTICAL); 

      TextView tvMul=new TextView(this); 
      tvMul.setText("Some Label"); 
      tvMul.setId(1); 
      tvMul.setLayoutParams(layoutWrapContent); 
      vgMul.addView(tvMul); 

      EditText edtMul=new EditText(this); 
      edtMul.setId(2); 
      edtMul.setLayoutParams(layoutMatchParentWidth); 
      vgMul.addView(edtMul); 

      Button btnAddMul=new Button(this); 
      btnAddMul.setText("Add"); 
      btnAddMul.setLayoutParams(layoutMatchParentWidth);        
      vgMul.addView(btnAddMul); 

      ListView lvMul =new ListView(this); 
      lvMul.setId(3); 
      lvListItems =new ArrayList<String>(); 
      lvArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lvListItems); 
      lvMul.setAdapter(lvArrayAdapter); 
      lvMul.setScrollContainer(false); 
      vgMul.addView(lvMul); 

      btnAddMul.setOnClickListener(new View.OnClickListener() { 
       @Override public void onClick(View v) { 
        EditText edtMul=(EditText)findViewById(2); 
        lvListItems.add(edtMul.getText().toString()); 
        lvArrayAdapter.notifyDataSetChanged();} 
       }); 

      linearLayout.addView(vgMul); 

Это из-за прокрутки? Я добавляю свои элементы управления как дочерние элементы линейного макета, но я застрял ... Любая помощь будет оценена ... Спасибо ...

+1

Почти наверняка, да. ScrollView и ListView не сосуществуют хорошо. http://stackoverflow.com/questions/3495890/how-can-i-put-a-listview-into-a-scrollview-without-it-collapsing – NigelK

ответ

1

Удалите прокрутку, listview уже реализует scrollview.

Хорошо, поэтому я предполагаю, что у вас есть активность. В некоторой части этой деятельности есть список, вы хотите прокручивать список, а также прокручивать всю активность.

Вы можете сделать это, создав listview в другом Relative Layout (или Linear layout). Позвольте мне написать пример для вас в XML

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

     <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
       <RelativeLayout 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" > 
     //Your text views and other stuff goes here 


       </RelativeLayout> 
     </ScrollView> 


    <RelativeLayout 
     android:id="@+id/SecondRelativeLayoutDetailedPage" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentBottom="true" 
     android:background="@color/holoActionBarColor"> 

      <ListView 
       android:id="@+id/myRewardsActiveList" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/myActiveRewardsHeadingLinLayout"> 
      </ListView>   

    </RelativeLayout> 
</RelativeLayout> 

Превращает ли смысл сейчас?

+0

Спасибо, но как прокрутить весь экран после удаления прокрутки? Как вы видите, я пытаюсь создать динамический экран. Я должен прокручивать экран, когда он вырастет? –

+0

@ EmreÇınar, я только что обновил свой ответ, проверьте его –

Смежные вопросы