我想在listview中生成30列或更多,我喜欢这样:
@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()是&#34; -1&#34;,然后我不知道如何生成有效的布局资源ID。
答案 0 :(得分:0)
你没有在布局上调用generateViewId()。
layout.setId(View.generateViewId());
但SimpleAdapter不需要TextView Ressource吗?
您可以使用GridView代替ListView。我认为这会更容易。此外,GridView会关心您的单元格大小。使用代码,每个单元格的单元格宽度会有所不同,具体取决于文本长度。