Android 列表视图行高
我正在尝试设置listview行高,而不使用自定义listview和新的arrayadapter。 我正在设置LayoutParams.WRAP_内容的高度;我在logcat中得到这个Android 列表视图行高,android,listview,Android,Listview,我正在尝试设置listview行高,而不使用自定义listview和新的arrayadapter。 我正在设置LayoutParams.WRAP_内容的高度;我在logcat中得到这个 02-19 20:42:25.721: E/AndroidRuntime(6936): at android.widget.AbsListView.obtainView(AbsListView.java:2465) 02-19 20:42:25.721: E/Androi
02-19 20:42:25.721: E/AndroidRuntime(6936): at android.widget.AbsListView.obtainView(AbsListView.java:2465) 02-19 20:42:25.721:
E/AndroidRuntime(6936): at android.widget.ListView.measureHeightOfChildren(ListView.java:1250)
以下是我的查看代码:
public View getView(int position, View convertView, ViewGroup parent) {
System.gc();
TextView tv = new TextView(mContext.getApplicationContext());
LayoutInflater inflater = getLayoutInflater();
LayoutParams params = tv.getLayoutParams();
String id = null;
mRowHeight = LayoutParams.WRAP_CONTENT;
if (params == null) {
music_column_index = musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
musiccursor.moveToPosition(position);
id = musiccursor.getString(music_column_index);
music_column_index = musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);
musiccursor.moveToPosition(position);
id += musiccursor.getString(music_column_index);
tv.setText(id);
params.height = mRowHeight;
} else
tv = (TextView) convertView;
return tv;
E/AndroidRuntime(6936):在
android.widget.AbsListView.obtainView(AbsListView.java:2465)02-19
20:42:25.721:E/AndroidRuntime(6936):在
android.widget.ListView.measureHeightOChildren(ListView.java:1250)
您的错误意味着在某些情况下,getView()
方法将返回null
。
我对你的代码有点困惑,如果是空的,你就不需要使用convertView
你的方法太混乱而且不正确。我建议您为行创建XML
布局,然后使用此布局充气convertView
,然后使用光标中的数据设置适当的小部件(文本视图)
if (convertView == null) {
convertView = inflater.inflate(R.layout.someRowLayout, null, false);
// if you have RowHolder so set him as tag to convertView
}
else {
// just recycle it if you have holder
}
if (cursor.moveToPosition(position)) {
String data = cursor.getString(cursor.getColumnIndex(Constants.COLUMN_NAME));
if (data != null && data.length() > 0) {
TextView t = findViewById(R.id.someId);
t.setText(data);
}
}
在经常调用的函数getView中调用System.gc()
有什么具体原因吗?在这种情况下,您可以使用convertView=new TextView(上下文)代码>或convertView=充气机。充气(android.R.layout.simple\u list\u item\u 1)代码>因为你不想使用额外的布局。谢谢你的帮助,我现在要尝试一下。我不喜欢生成行xml的方法,因为此listview从电话中加载了很多stuf。textview必须在行xml中吗?或者我只需要做TextView tv=newTextView(mContext.getApplicationContext());