【发布时间】:2018-10-30 10:09:59
【问题描述】:
所以我做了一个列表视图,称之为“邻居”。 它应该显示房屋名称、号码及其密码的列表。为此,我制作了一个带有 3 个文本视图的布局。 CustomAdapter 类获取的三个列表来自 SQL,它有效(我对其进行了调试,它得到了 3 个完整列表)
编辑:现在它只是失败了,它给了我这个错误。我已将代码更改为建议的答案,并解决了最后的问题
名单:
<ListView
android:id="@+id/neighborhood"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/allAddresses"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/AddresSearch" />
这是 onCreate:
ListView neighborhood = (ListView)findViewById(R.id.neighborhood);
CustomAdapter customAdapter= new CustomAdapter(houseList,numList,passList);
neighborhood.setAdapter(customAdapter);
这是适配器助手类:
class CustomAdapter extends BaseAdapter{
ArrayList<String> houseList ;
ArrayList<String> numList ;
ArrayList<String> passList ;
public CustomAdapter(ArrayList<String>list1,ArrayList<String>list2,ArrayList<String>list3){
this.houseList = list1;
this.numList = list2;
this.passList = list3;
}
@Override
public int getCount() {
return houseList.size();
}
@Override
public Object getItem(int position) {
return houseList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int i, View view, ViewGroup parent) {
view = getLayoutInflater().inflate(R.layout.activity_pass_item_view,null);
TextView house = (TextView) view.findViewById(R.id.house);
TextView num = (TextView) view.findViewById(R.id.num);
TextView pass = (TextView) view.findViewById(R.id.pass);
house.setText(houseList.get(i).toString());
num.setText(numList.get(i).toString());
pass.setText(passList.get(i).toString());
return null;
}
}
这是列表视图的自定义布局:仅包含 3 个文本视图:
<TextView
android:id="@+id/num"
android:layout_width="86dp"
android:layout_height="45dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="28dp"
app:layout_constraintEnd_toStartOf="@+id/house"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/house"
android:layout_width="86dp"
android:layout_height="45dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="32dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/pass"
android:layout_width="86dp"
android:layout_height="45dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="32dp"
app:layout_constraintEnd_toStartOf="@+id/num"
app:layout_constraintTop_toTopOf="parent" />
编辑: 这是它现在给我的错误:
E/AndroidRuntime: 致命异常: main 进程:com.example.omer.deliverypasses,PID:17510 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int android.view.View.getImportantForAccessibility()” 在 android.widget.AbsListView.obtainView(AbsListView.java:2363) 在 android.widget.ListView.measureHeightOfChildren(ListView.java:1280) 在 android.widget.ListView.onMeasure(ListView.java:1188) 在 android.view.View.measure(View.java:18788) 在 android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1227) 在 android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1572) 在 android.view.View.measure(View.java:18788) 在 android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 在 android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 在 android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143) 在 android.view.View.measure(View.java:18788) 在 android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 在 android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:401) 在 android.view.View.measure(View.java:18788) 在 android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 在 android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 在 android.view.View.measure(View.java:18788) 在 android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 在 android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465) 在 android.widget.LinearLayout.measureVertical(LinearLayout.java:748) 在 android.widget.LinearLayout.onMeasure(LinearLayout.java:630) 在 android.view.View.measure(View.java:18788) 在 android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 在 android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 在 com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643) 在 android.view.View.measure(View.java:18788) 在 android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100) 在 android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216) 在 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452) 在 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) 在 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 在 android.view.Choreographer.doCallbacks(Choreographer.java:670) 在 android.view.Choreographer.doFrame(Choreographer.java:606) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
非常感谢
【问题讨论】:
-
在 public int getCount() 中返回列表大小。不返回 0