我正在尝试制作这样的布局:

问题是我不希望ListViews可滚动.我希望它们尽可能高,并使整个屏幕可滚动.如果我将ListView的高度设置为ListViews,则不起作用.使它工作的唯一方法是设置一个特定的高度 - 但我不知道ListView中有多少项.
我知道我不应该将ListView放在ScrollView中 - 但我不希望ListView可以滚动,只是为了显示所有项目.
也许还有更好的方法让它发挥作用?
我总是使用LayoutInflater和findViewById在一个getView方法中创建新项目Adapter.
但在许多文章中,人们写的findViewById非常慢,强烈建议使用View Holder Pattern.
谁能解释为什么findViewById这么慢?为什么View Holder Pattern更快?
如果需要添加不同的项目,我该怎么办ListView?我应该为每种类型创建类吗?
static class ViewHolderItem1 {
TextView textViewItem;
}
static class ViewHolderItem2 {
Button btnViewItem;
}
static class ViewHolderItem3 {
Button btnViewItem;
ImageView imgViewItem;
}
Run Code Online (Sandbox Code Playgroud) 我已经使用此代码在另一个上面显示了2个列表视图.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#f00" >
</ListView>
<ListView
android:id="@+id/listView2"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#0f0" >
</ListView>
Run Code Online (Sandbox Code Playgroud)
问题是,这导致每个列表视图占据屏幕的一半.我正在为这两个列表添加一个标题.
LevelAdapter adapter = new LevelAdapter(getActivity(),
R.layout.list_item, weather_data);
View header = inflater.inflate(R.layout.header2, null);
View header2 = inflater.inflate(R.layout.header, null);
lv1.addHeaderView(header);
lv2.addHeaderView(header2);
lv1.setAdapter(adapter);
lv2.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
我想在第一个列表结束后出现第二个列表的标题.我该怎么做?如何使列表视图出现,以便第一个在第一个结束时开始?谢谢
在我的应用程序中我使用自定义列表视图适配 在列表视图项中,我添加了另一个布局.因为在我的服务中,一个订单有任意数量的订单商品.为了显示订单项目,我将下面的订单商品布局添加到自定义列表视图item.it工作正常.但滚动列表视图时,数据会发生变化.
适配器类:
public class PreviousDataAdapter extends BaseAdapter {
ArrayList<PreviousOrderData> bpData;
private ArrayList<PreviousOrderData> arraylist;
ArrayList<OrderItemData> opData;
private ArrayList<OrderItemData> arraylist1;
private Activity activity;
private LayoutInflater inflater;
String g_orderid;
DatabaseHandler db;
SharedPreferences m_sharedPreference;
SharedPreferences.Editor m_editor;
ArrayList<String> circless = new ArrayList<String>();
public PreviousDataAdapter(Activity activity, ArrayList<PreviousOrderData> bpData,ArrayList<OrderItemData> opdata) {
// TODO Auto-generated constructor stub
this.activity = activity;
this.bpData = bpData;
this.opData=opdata;//k?
// this.opData=bpData.get()//opdata;
inflater = LayoutInflater.from(activity);
db = new DatabaseHandler(activity);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return bpData.size();
} …Run Code Online (Sandbox Code Playgroud) 我想创建Listview,其中我想要所有不同行的不同布局.那么如何创建自定义适配器以设置不同行的不同布局.
任何帮助将不胜感激.
先感谢您.
我们正在与我们想融入后的详细视图多个组件的应用程序工作(见样机.)每件的可扩展(通常使用Ajax调用)和整个屏幕滚动查看全部内容.

我们不确定解决此问题的最佳方法,因为根据Google的说法,列表视图不应放在滚动视图中.似乎有人这样做,因为如何将ListView放入ScrollView而不会崩溃?.
一般来说,帖子中的内容量足够小,可以一次性全部膨胀,但有可能获得100多张照片或300多条评论的帖子,其中内存可能是一个问题.
我的问题是建立这样一个布局的最好的方法是什么,如果不是正式的话.我有兴趣听听整个布局结构的建议,所以我理解像标题这样的静态内容如何与照片或评论一起播放.
我想优化小帖子的性能/易于实现(几张照片,20-50条评论) - 但我们必须能够处理大型帖子而不会崩溃应用程序.
我是一个非常初学者,我需要有人告诉我,哪些方式即时信使GUI与泡沫完成.它只是一个带有9个背景的TextViews的ScrollView吗?那些新的创建方式最底层?或者是否有任何库来实现这一切?如何在Android上制作它?请指出我的技术.

我必须显示具有不同类型视图的列表。所以我必须定义一个带有适配器的 ListView,我必须在其中膨胀多个视图。我已经完成了给出的示例,但问题是我的列表不对称,就像在 4 个项目之后每次重复标题的示例一样。所以我面临着重用物品的问题getView()
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case TYPE_1:
convertView = mInflater.inflate(R.layout.item1, null);
.......
break;
case TYPE_2:
convertView = mInflater.inflate(R.layout.item2, null);
.......
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
............
............
}
Run Code Online (Sandbox Code Playgroud)
现在,如果 convertView 不为空,但之前使用的项目类型不同,则布局将不匹配。这段代码将如何处理这个问题?
我知道在stackoverflow上发布了很多类似的问题,所以请不要认为我没有搜索到高低.我认为我的问题只是从现在完全理解listViews和列表项的生命周期.我有一个列表视图,可以包含两种类型的消息,出站或入站.最初,我的listView将使用不同的背景颜色,具体取决于消息的类型(出站与入站),并且它可以完美地工作.现在我的应用程序不需要列表项的不同背景,但它实际上需要不同的列表项的不同布局.
这是我的适配器的剪辑.
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
SoapBoxMessage thisMessage = messages.get(position);
if (v == null) {
LayoutInflater inflater = (LayoutInflater) getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (thisMessage.isOutbound()) {
v = inflater.inflate(R.layout.outbound_row, null);
} else {
v = inflater.inflate(R.layout.inbound_row, null);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个查询数据库并获取记录集的应用程序,在显示器上,我需要使用一个复杂布局的行来呈现这些数据.每行包含一些ImageView,许多TextView等...
以编程方式创建行布局真的很困难,有没有办法从xml中获取整个行布局(行布局的容器和子行),编辑一些属性(如行布局的TextViews)并添加结果为LinearLayout?