2017-02-18 7 views
0

Я хочу, чтобы генерировать 30 или столбец может быть больше в ListView, я так:Как динамически добавить столбец списка в android?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ListView listView=(ListView)findViewById(R.id.liv); 
    ArrayList<HashMap<String,String>> sourceList=new ArrayList<HashMap<String, String>>(); 
    ArrayList<String> from=new ArrayList<>(); 
    ArrayList<Integer> to = new ArrayList<>(); 
    int colNumber=30; 
    int rowNumber=30; 
    LinearLayout layout=new LinearLayout(this); 
    layout.setOrientation(LinearLayout.HORIZONTAL); 
    for(int i=0;i<colNumber;i++) { 
     from.add("col" + i); 
     TextView textView=new TextView(this); 
     textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT)); 
     layout.addView(textView); 
     to.add(textView.generateViewId()); 
    } 
    for(int j=0;j<rowNumber;j++) { 
     HashMap<String, String> map = new HashMap<String, String>(); 
     for (int i = 0; i < colNumber; i++) { 
      map.put("col" + i, i+","+j); 
     } 
     sourceList.add(map); 
    } 
    SimpleAdapter adapter=new SimpleAdapter(this,sourceList, layout.getId(),from.toArray(new String[from.size()]),Utils.ToIntsArray(to)); 
    listView.setAdapter(adapter); 
} 

но layout.getId() является «-1», то я не знаю, как для создания эффективной компоновки идентификатор ресурса.

ответ

0

Вы не назвали generateViewId() на макете.

layout.setId(View.generateViewId()); 

Но разве простой адаптер не нуждается в TextView Ressource?

Возможно, вы можете использовать GridView вместо ListView. Думаю, было бы легче. Кроме того, GridView будет заботиться о ваших размерах ячеек. С вашим кодом ширина ячейки будет различной для каждой ячейки в зависимости от вашей длины текста.

+0

Я изменяю программу setId, но он будет закрыт и не будет генерировать исключение, я думаю, что TextView был новым 'TextView textView = new TextView (this);' Я в процессе обучения ... – HaibaraAi

+0

Возможно, вы могли бы использовать GridView вместо ListView. – fijili

+0

Но не могли бы вы рассказать мне, почему это не работает? Если я использую идентификатор ресурса xml, тогда он будет создан правильно. Я имею в виду, если я пишу 30 textview в макете xml – HaibaraAi

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

  • Нет связанных вопросов^_^