不滚动的Android ListView?

我正在尝试做一个类似于Android市场的布局…在评论里面有什么似乎是一个ListView但它不滚动(整个页面滚动,但不是评论)。 我不知道是否它甚至是一个ListView,但我想要的东西看起来像列表视图(即有这些分隔栏和什么不是SCROLLABLE)。 有人build议使用LinearLayout而不是ListView但我也希望项目是可点击的,并打开一个新的活动。 请帮忙?

我目前的布局树是这样的

 <LinearLayout> <ScrollView> <RelativeLayout> 

我正在寻找把内容放在RelativeLayout

Solutions Collecting From Web of "不滚动的Android ListView?"

正如程序员所解释的那样,GoogleIo的video中的listView从不在List View中放置ListView。 如果你的列表不能滚动使用一个ViewGroup就像一个线性布局,并把所有的项目添加到这个ViewGroup中的代码循环中。 如果您希望整行可点击,您必须使用另一个ViewGroup作为每行的根节点,并将OnClickListener添加到此视图。

示例代码:

 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); for (int current = 0; current < itemCount; current++) { View view = inflater.inflate(R.layout.layout_id, parent, false); //initialize the view view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(), CLASS_TO_START) startActivity(intent); } }); viewGroup.addView(view); if (current < itemCount - 1) { inflater.inflate(R.layout.line, viewGroup); } } 

这段代码将会为每个你拥有的项目生成一个View,并将其放入viewGroup中。 每个项目,但最后它还将添加一个分区到viewGroup。

我遇到过同样的问题。 我只是使用setAdapter方法扩展了默认的LinearLayout

 public class LinearListView extends LinearLayout { Adapter adapter; Observer observer = new Observer(this); public LinearListView(Context context) { super(context); } public LinearListView(Context context, AttributeSet attrs) { super(context, attrs); } public LinearListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public void setAdapter(Adapter adapter) { if (this.adapter != null) this.adapter.unregisterDataSetObserver(observer); this.adapter = adapter; adapter.registerDataSetObserver(observer); observer.onChanged(); } private class Observer extends DataSetObserver { LinearListView context; public Observer(LinearListView context) { this.context = context; } @Override public void onChanged() { List<View> oldViews = new ArrayList<View>(context.getChildCount()); for (int i = 0; i < context.getChildCount(); i++) oldViews.add(context.getChildAt(i)); Iterator<View> iter = oldViews.iterator(); context.removeAllViews(); for (int i = 0; i < context.adapter.getCount(); i++) { View convertView = iter.hasNext() ? iter.next() : null; context.addView(context.adapter.getView(i, convertView, context)); } super.onChanged(); } @Override public void onInvalidated() { context.removeAllViews(); super.onInvalidated(); } } } 

希望这可以帮助!

我没有足够的声望点来评论,但对于那些只有1项出现在Nappy的解决scheme中,请确保您在布局文件中设置以下内容:

  android:orientation="vertical" 

否则会出现只有一个项目被添加,但实际上他们只是被水平添加…希望这有助于某人。

你可以创build一个ListView并把它放在里面,这样整个页面就会滚动。 你可以推出你自己的适配器实现,但我build议使用CommonsWare的优秀的MergeAdapter你可以用addView()addView()来添加标签或分隔条。 查看该页面了解更多关于使用情况的信息以及演示项目。