RecyclerView.ViewHolder绑定不正确

我正在建设一个使用java和kotlin的android应用程序。 我对kotlin很新,而且我的适配器有问题。 出于某种原因,它似乎并没有适配器ViewHolder绑定正确。 我不知道该怎么办,因为我没有收到任何错误信息,而且在调试时遇到了麻烦。 这里是我的适配器的代码:

data class NetworkTest(val addr: String, val port: String, val results: String, val protocol: String) public class NetTestRecyclerAdapter(val netList: List<NetworkTest>, val context: Context): RecyclerView.Adapter<NetTestRecyclerAdapter.NetTestRecyclerHolder>(){ override fun onBindViewHolder(holder: NetTestRecyclerHolder, position: Int) { holder.bindItems(netList[position]) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NetTestRecyclerHolder { val v: View = LayoutInflater.from(context).inflate(R.layout.tested_list_item, parent, false) return NetTestRecyclerHolder(v) } override fun getItemCount(): Int { return netList.size } class NetTestRecyclerHolder(itemView: View): RecyclerView.ViewHolder(itemView){ fun bindItems(networkTest: NetworkTest){ val addrPortView = itemView.find<TextView>(R.id.addrPortView) val resultsProtocolView = itemView.find<TextView>(R.id.resultProtocolView) addrPortView.text = "Address: ${networkTest.addr} Port: ${networkTest.port}" resultsProtocolView.text = "Results: ${networkTest.results} Protocol: ${networkTest.protocol}" } } } 

这里是我主要活动的代码:

 public class NetTestActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { private RecyclerView mRecyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_net_test); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); mRecyclerView = (RecyclerView)findViewById(R.id.networkList); List toolTestList = new ArrayList<>(); toolTestList.add(new NetworkTest("addr", "port", "results", "protocol")); NetTestRecyclerAdapter adapter = new NetTestRecyclerAdapter(toolTestList, getApplicationContext()); //context may need to be changed mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext())); mRecyclerView.setAdapter(adapter); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.net_test, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_camera) { // Handle the camera action } else if (id == R.id.nav_gallery) { } else if (id == R.id.nav_slideshow) { } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } } 

请帮我看看我在这里做错了什么。 预先感谢您的帮助。

继承我的视图的布局文件以及

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/list_item" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/addrPortView" android:text="testing" android:layout_width="match_parent" android:layout_height="wrap_content"/> <TextView android:id="@+id/resultProtocolView" android:text="again" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> 

我的recyclerview布局看起来像这样:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/networkList" android:layout_height="match_parent" android:layout_width="match_parent"> </android.support.v7.widget.RecyclerView> 

我应该包括这样的事情:

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

这里是adb dumpsys的顶部

 adb shell dumpsys activity top TASK com.example.zacharymcdaniel.nettest id=4928 ACTIVITY com.example.zacharymcdaniel.nettest/.NetTestActivity 2543227 pid=14548 Local Activity 5de3ad9 State: mResumed=true mStopped=false mFinished=false mChangingConfigurations=false mCurrentConfig={1.0 311mcc870mnc en_US ldltr sw360dp w360dp h569dp 320dpi nrml port finger -keyb/v/h -nav/h s.73 fontTypeIndex0 forceEmbolden0} mLoadersStarted=true FragmentManager misc state: mHost=android.app.Activity$HostCallbacks@86516d4 mContainer=android.app.Activity$HostCallbacks@86516d4 mCurState=5 mStateSaved=false mDestroyed=false ViewRoot: mAdded=true mRemoved=false mConsumeBatchedInputScheduled=false mConsumeBatchedInputImmediatelyScheduled=false mPendingInputEventCount=0 mProcessInputEventsScheduled=false mTraversalScheduled=false android.view.ViewRootImpl$NativePreImeInputStage: mQueueLength=0 android.view.ViewRootImpl$ImeInputStage: mQueueLength=0 android.view.ViewRootImpl$NativePostImeInputStage: mQueueLength=0 Choreographer: mFrameScheduled=false mLastFrameTime=43338300 (43548 ms ago) View Hierarchy: com.android.internal.policy.PhoneWindow$DecorView{bf7807d VE..... R....... 0,0-720,1280} android.widget.LinearLayout{f35fb72 VE..... ........ 0,0-720,1187} android.view.ViewStub{8c4fbc3 GE..... ......I. 0,0-0,0 #10203aa android:id/action_mode_bar_stub} android.widget.FrameLayout{c66cc40 VE..... ........ 0,0-720,1187} android.support.v7.widget.FitWindowsLinearLayout{380a779 VE..... ........ 0,0-720,1187 #7f0d0067 app:id/action_bar_root} android.support.v7.widget.ViewStubCompat{1645cbe GE..... ......I. 0,0-0,0 #7f0d0068 app:id/action_mode_bar_stub} android.support.v7.widget.ContentFrameLayout{4f1911f VE..... ........ 0,0-720,1187 #1020002 android:id/content} android.support.v4.widget.DrawerLayout{20c6c6c VFED..... ........ 0,0-720,1187 #7f0d007b app:id/drawer_layout} android.support.design.widget.CoordinatorLayout{fdb4235 VE..... ........ 0,48-720,1187} android.support.design.widget.AppBarLayout{90688e5 VE..... ........ 0,0-720,112} android.support.v7.widget.Toolbar{88586ca VE..... ........ 0,0-720,112 #7f0d007d app:id/toolbar} android.support.v7.widget.AppCompatTextView{a28203b V.ED..... ........ 144,29-283,83} android.support.v7.widget.AppCompatImageButton{589e358 VFED..C.. ........ 0,0-112,112} android.support.v7.widget.ActionMenuView{d0accb1 VE..... ........ 640,0-720,112} android.support.v7.widget.ActionMenuPresenter$OverflowMenuButton{9dd4596 VFED..CL. ........ 0,8-80,104} android.support.v7.widget.RecyclerView{b9c3fba VFED..... .F...... 0,0-720,1139 #7f0d007f app:id/networkList} android.widget.LinearLayout{66e8517 VE..... ........ 0,0-720,76 #7f0d0050 app:id/list_item} android.support.v7.widget.AppCompatTextView{5cc1647 V.ED..... ........ 0,0-720,38 #7f0d00a5 app:id/addrPortView} android.support.v7.widget.AppCompatTextView{65dd04 V.ED..... ........ 0,38-720,76 #7f0d00a6 app:id/resultProtocolView} android.widget.LinearLayout{9ce82ed VE..... ........ 0,76-720,152 #7f0d0050 app:id/list_item} android.support.v7.widget.AppCompatTextView{e5ef9d V.ED..... ........ 0,0-720,38 #7f0d00a5 app:id/addrPortView} android.support.v7.widget.AppCompatTextView{9202522 V.ED..... ........ 0,38-720,76 #7f0d00a6 app:id/resultProtocolView} android.widget.LinearLayout{84c5bb3 VE..... ........ 0,152-720,228 #7f0d0050 app:id/list_item} android.support.v7.widget.AppCompatTextView{fa9cfe3 V.ED..... ........ 0,0-720,38 #7f0d00a5 app:id/addrPortView} android.support.v7.widget.AppCompatTextView{be5c570 V.ED..... ........ 0,38-720,76 #7f0d00a6 app:id/resultProtocolView} android.widget.LinearLayout{79d60e9 VE..... ........ 0,228-720,304 #7f0d0050 app:id/list_item} android.support.v7.widget.AppCompatTextView{b36e899 V.ED..... ........ 0,0-720,38 #7f0d00a5 app:id/addrPortView} android.support.v7.widget.AppCompatTextView{ebf716e V.ED..... ........ 0,38-720,76 #7f0d00a6 app:id/resultProtocolView} android.widget.LinearLayout{527000f VE..... ........ 0,304-720,380 #7f0d0050 app:id/list_item} android.support.v7.widget.AppCompatTextView{81f873f V.ED..... ........ 0,0-720,38 #7f0d00a5 app:id/addrPortView} android.support.v7.widget.AppCompatTextView{e39c89c V.ED..... ........ 0,38-720,76 #7f0d00a6 app:id/resultProtocolView} android.widget.LinearLayout{e6222a5 VE..... ........ 0,380-720,456 #7f0d0050 app:id/list_item} android.support.v7.widget.AppCompatTextView{4047555 V.ED..... ........ 0,0-720,38 #7f0d00a5 app:id/addrPortView} android.support.v7.widget.AppCompatTextView{6f5367a V.ED..... ........ 0,38-720,76 #7f0d00a6 app:id/resultProtocolView} android.support.design.widget.FloatingActionButton{cdfe6b VFED..C.. ........ 576,995-688,1107 #7f0d007e app:id/fab} android.support.design.widget.NavigationView{95d8e2b I.ED..... ......ID -560,0-0,1187 #7f0d007c app:id/nav_view} android.support.design.internal.NavigationMenuView{e68d288 VFED.V... ......ID 0,0-560,1187 #7f0d0087 app:id/design_navigation_view} android.widget.LinearLayout{ff74421 VE..... ......I. 0,0-560,336 #7f0d0086 app:id/navigation_header_container} android.widget.LinearLayout{5904046 VE..... ......ID 0,0-560,320} android.support.v7.widget.AppCompatImageView{e24e207 V.ED..... ......ID 32,52-128,180 #7f0d008c app:id/imageView} android.support.v7.widget.AppCompatTextView{afc8f34 V.ED..... ......ID 32,180-528,250} android.support.v7.widget.AppCompatTextView{763015d V.ED..... ......ID 32,250-294,288 #7f0d008d app:id/textView} android.support.design.internal.NavigationMenuItemView{a801ad2 VFED..C.. ......I. 0,336-560,432} android.support.v7.widget.AppCompatCheckedTextView{12397a3 V.ED..... ......ID 32,0-528,96 #7f0d0088 app:id/design_menu_item_text} android.view.ViewStub{f6d6aa0 GE..... ......I. 0,0-0,0 #7f0d0089 app:id/design_menu_item_action_area_stub} android.support.design.internal.NavigationMenuItemView{fd35659 VFED..C.. ......I. 0,432-560,528} android.support.v7.widget.AppCompatCheckedTextView{321121e V.ED..... ......ID 32,0-528,96 #7f0d0088 app:id/design_menu_item_text} android.view.ViewStub{9ce0aff GE..... ......I. 0,0-0,0 #7f0d0089 app:id/design_menu_item_action_area_stub} android.support.design.internal.NavigationMenuItemView{44e90cc VFED..C.. ......I. 0,528-560,624} android.support.v7.widget.AppCompatCheckedTextView{f59ff15 V.ED..... ......ID 32,0-528,96 #7f0d0088 app:id/design_menu_item_text} android.view.ViewStub{448322a GE..... ......I. 0,0-0,0 #7f0d0089 app:id/design_menu_item_action_area_stub} android.support.design.internal.NavigationMenuItemView{882581b VFED..C.. ......I. 0,624-560,720} android.support.v7.widget.AppCompatCheckedTextView{639edb8 V.ED..... ......ID 32,0-528,96 #7f0d0088 app:id/design_menu_item_text} android.view.ViewStub{1687791 GE..... ......I. 0,0-0,0 #7f0d0089 app:id/design_menu_item_action_area_stub} android.support.design.internal.NavigationMenuItemView{90f46f6 VFED..C.. ......I. 0,720-560,816} android.support.v7.widget.AppCompatCheckedTextView{b645af7 V.ED..... ......ID 32,0-528,96 #7f0d0088 app:id/design_menu_item_text} android.view.ViewStub{f7c2d64 GE..... ......I. 0,0-0,0 #7f0d0089 app:id/design_menu_item_action_area_stub} android.view.View{d0bfbcd V.ED..... ........ 0,1187-720,1280 #1020030 android:id/navigationBarBackground} android.view.View{260dc82 V.ED..... ........ 0,0-720,48 #102002f android:id/statusBarBackground} Looper (main, tid 1) {4f9af93} (Total messages: 0, polling=false, quitting=false) Local FragmentActivity 5de3ad9 State: mCreated=truemResumed=true mStopped=false mReallyStopped=false mLoadersStarted=true FragmentManager misc state: mHost=android.support.v4.app.FragmentActivity$HostCallbacks@80bbd0 mContainer=android.support.v4.app.FragmentActivity$HostCallbacks@80bbd0 mCurState=5 mStateSaved=false mDestroyed=false 

看起来像你的适配器几乎没问题,但你可以写你的视图持有人可能是有帮助的

 class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { val addrPortView = view.findViewById(R.id.addrPortView) as TextView fun bind(networkTest: NetworkTest){ addrPortView .text = "Address: ${networkTest.addr} Port: ${networkTest.port}" } }