gpt4 book ai didi

android - 自定义适配器 View

转载 作者:搜寻专家 更新时间:2023-11-01 09:04:53 25 4
gpt4 key购买 nike

目标

我想在 scrollView 中有一个列表(不是 ListView)

问题

ScrollView 中的 ListView 不工作

可能的解决方案

我认为解决方案是执行以下操作:

  1. 创建一个扩展 AdapterView 的类
  2. 在 XML 布局中设置类
  3. 用适配器填充 adapterView。

解决方案的问题

如果我将扩展的 AdapterView 放在我的 xml 布局中,应用程序会崩溃。

错误:10-04 16:02:14.396:W/ActivityManager(2119):ActivityRecord 的 Activity 暂停超时{422c1838 package/.activities.SelectWorkplaceActivity}

问题

这里出了什么问题?

是否有更好的方法来使用适配器创建不可滚动的列表?

代码

View :

public class BasicListView extends AdapterView<ListAdapter> {

private String tag = "BasicListView";

private ListAdapter mAdapter;

private DataSetObserver mDataSetObserver;

private Context mContext;

public BasicListView(Context context) {
super(context);
mContext = context;

}

public BasicListView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
}

public BasicListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mContext = context;
}

@Override
public ListAdapter getAdapter() {
return mAdapter;
}
@Override
public View getSelectedView() {
Log.i(tag, "getSelectedView not available");
return null;
}
@Override
public void setAdapter(ListAdapter adapter) {
if(mAdapter != null)
{
mAdapter.unregisterDataSetObserver(mDataSetObserver);
}

mAdapter = adapter;

requestLayout();
}

@Override
public void setSelection(int position) {
Log.i(tag, "setSelection not available");
}
}

和 XML 布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Code scannen" />

<Button
android:id="@+id/btn_scan_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="Scan werkplek" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Code handmatig invoeren" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >


<EditText
android:id="@+id/et_type_code"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10" >
</EditText>

<Button
android:id="@+id/btn_send_code"
style="?android:attr/buttonStyleSmall"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Verzenden" />
</LinearLayout>

<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_current_sessions"
/>

<package.views.BasicListView
android:id="@+id/current_sessions"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</package.views.BasicListView>

<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="@string/label_favorite_workplaces"
/>

<ListView
android:id="@+id/favorite_workplaces"
android:layout_width="match_parent"
android:layout_height="193dp"
/>

</LinearLayout>
</ScrollView>


<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/actionbar" />

如果您想了解更多信息,请直接询问 :)

最佳答案

Romain Guy 的回答解释了为什么您应该为此目的使用 LinearLayout 而不是 ListView:https://stackoverflow.com/a/3496042/1717225

关于android - 自定义适配器 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12728712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com