Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 列表视图行高_Android_Listview - Fatal编程技术网

Android 列表视图行高

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

我正在尝试设置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/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());