所以我们有一个列表视图,并且希望使其中的某些项目位于“上方”,即可见(即向上滚动以查看它们)。setSelection()的作品但只有当ListView有足够的项目滚动屏幕已经..任何人有任何想法如何实现这个时,列表中只有几个项目呢?没有填充视口的ListView上的setSelection()
回答
setSelection()会工作,但如果该项目已经在屏幕上,你不应该看到任何区别。请记住,在触摸模式下,列表项不会显示为选中状态。
是的..那是我的问题。我们正试图将特定的列表项目锚定到屏幕的顶部,而不管屏幕上有多少项目。 – 2011-05-15 20:08:58
这不是listview的工作方式。 – 2011-05-15 20:28:14
所以没办法做到这一点? :/。也许像上述评论者所建议的空白间隔符? – 2011-05-15 20:30:49
这结合了塔内的实例的ListView之一,信息从Android ListView child View setEnabled() and setClickable() do nothing
package com.stackoverflow.q6010765;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class Main extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
List<Datum> data = new ArrayList<Datum>();
data.add(new Datum("FIRST", "One line of text."));
data.add(new Datum("SECOND", "Two lines of text. Two lines of text. Two lines of text."));
data.add(new Datum("THIRD", "Three or more lines of text. Three or more lines of text. Three or more lines of text. Three or more lines of text. Three or more lines of text. Three or more lines of text."));
data.add(new Datum("FOURTH", "One line of text, again."));
ListView myList = (ListView) findViewById(R.id.my_list);
myList.setAdapter(new MyAdapter(this, R.layout.row, data));
myList.setSelection(2);
}
}
class Datum
{
String left, right;
Datum(String left, String right)
{
this.left = left;
this.right = right;
}
}
class MyAdapter extends ArrayAdapter<Datum>
{
private final List<Datum> data;
private final int originalDataLength;
private int textViewResourceId;
MyAdapter(Context context, int textViewResourceId, List<Datum> data)
{
super(context, textViewResourceId, data);
this.data = data;
this.originalDataLength = data.size();
for (int i = 0; i < 20; i++)
{
data.add(new Datum("", ""));
}
this.textViewResourceId = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if (convertView == null)
{
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(textViewResourceId, null);
}
Datum datum = data.get(position);
if (datum != null)
{
TextView leftView = (TextView) convertView.findViewById(R.id.left_text);
TextView rightView = (TextView) convertView.findViewById(R.id.right_text);
if (leftView != null)
{
leftView.setText(datum.left);
}
if (rightView != null)
{
rightView.setText(datum.right);
}
}
if (datum.left.length() == 0)
{
convertView.setFocusable(false);
convertView.setClickable(false);
}
return convertView;
}
@Override
public boolean areAllItemsEnabled()
{
return false;
}
@Override
public boolean isEnabled(int position)
{
return position < originalDataLength;
}
}
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<TextView
android:id="@+id/left_text"
android:layout_width="75dip"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/right_text"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="2"
android:ellipsize="end" />
</LinearLayout>
我试图复制上面没有运气:http://sprunge.us/DOeL – 2011-05-16 02:35:32
复制我发布的内容很容易。只需复制并粘贴。如果您要描述您遇到的问题并发布复制问题所需的完整最小代码,我会查看您的具体情况。 – 2011-05-16 02:59:44
乍一看,for循环似乎没有将任何额外的项目添加到列表中。 – 2011-05-16 03:21:22
- 1. listView没有被填充?
- 2. Android listview没有被填充
- 3. Listview没有明显填充
- 4. 的Android的ListView,为setSelection()有setFlags后没有效果(... FULLSCREEN)
- 5. ArrayList和ListView没有被填充
- 6. ImageView没有填充整个ListView项目
- 7. Android listview没有填充数据
- 8. 填充的ListView,空列表视图
- 9. WPF的ListView填充
- 10. 在WindowFocusChanged上填充ListView
- 11. 有页脚拉伸高度来填充视口没有javascript
- 12. 尝试在firebase上填充listview时没有设置器/字段
- 13. ASP.NET ListView填充
- 14. ListView不填充
- 15. ListView未填充
- 16. WPF - 填充ListView
- 17. 运行串口线程后填充listview
- 18. 的Android Baseadapter填充的ListView
- 19. 填充的ListView的Android
- 20. NSMutableArray没有在视图的第一个外观上填充
- 21. 的ListView线填充半屏
- 22. 安卓GSON的ListView填充
- 23. RecyclerView没有填充
- 24. SimpleCursorAdapter来填充ListView
- 25. 从DataTable填充ListView
- 26. 填充一个ListView
- 27. 从phpMyAdmin填充ListView
- 28. ListView无法填充
- 29. 从SharedPreferences填充ListView
- 30. 填充listview多列
要澄清,选择上方的项目是否必须在屏幕外?如果是这样,那么解决方案可能只是用足够的不可选空项填充下面的空间。 – 2011-05-15 20:02:21
你会怎么做呢?每个项目都有按钮等与之相关联,如果我们只是添加空项目,它会显得很杂乱/不专业。这是一个动态列表。 – 2011-05-15 20:12:14