gpt4 book ai didi

android - ListView SetAdapter NullPointerException异常

转载 作者:行者123 更新时间:2023-11-29 01:43:42 26 4
gpt4 key购买 nike

我不明白为什么 NPE 会在这里发生。花了很多时间试图弄清楚这一点。使用日志我发现崩溃的地方(Records.class ...向下滚动)。如果需要,我还会提供每个代码文件。我发现它不是上下文为空。

记录类

  package com.wordpress.jimmaru.tutorial.SimpleGame;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ListView;
import android.widget.Toast;

public class Records extends Activity{

private Score_DS ds=new Score_DS(this);
Data_LV[] data;
String[] name,score;
ListView lvrecords;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// если хотим, чтобы приложение постоянно имело портретную ориентацию
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

// если хотим, чтобы приложение было полноэкранным
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

// и без заголовка
requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.records);
//setContentView(new GameView(this,null));

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

lvrecords=(ListView)findViewById(R.id.listView1);


Recfill();


}

public void Recfill()
{ds.open();
Log.d("Pidar","ds.open");
name=ds.curspinner("Records","Player_Name");
score=ds.curspinner("Records","Player_Score");
Log.d("Pidar","curspinner");
ds.close();
Log.d("Pidar","ds.close");
int i=0;
if (score.length>0){
data=new Data_LV[score.length];
Log.d("Pidar","data new");
while (i<score.length) {Log.d("Pidar","cikl "+i);
data[i]=new Data_LV();
Log.d("Pidar","data[i] new");
data[i].id=Integer.toString(i+1);
data[i].name=name[i];
data[i].score=score[i];

i++;
}
Log.d("Pidar","nachalo adaptera");
LV_Adapter adapter = new LV_Adapter(this, R.layout.item, data);

**lvrecords.setAdapter(adapter);** //This line doesn't execute
}
else
{ Toast.makeText(this, "Записей нет", Toast.LENGTH_LONG).show();}
}
}

records.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

</ListView>

</LinearLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<TextView
android:id="@+id/pl_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />

<TextView
android:id="@+id/pl_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="TextView" />

<TextView
android:id="@+id/pl_score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="TextView" />

</LinearLayout>

LV_适配器

package com.wordpress.jimmaru.tutorial.SimpleGame;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

class LV_Adapter extends ArrayAdapter<Data_LV> {
public LV_Adapter(Context context, int textViewResourceId, Data_LV[] objects) {
super(context, textViewResourceId, objects);
}
public LV_Adapter(Context context, int textViewResourceId, List<Data_LV> objects) {
super(context, textViewResourceId, objects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item, null);
TextView t1 = (TextView)convertView.findViewById(R.id.pl_id);
TextView t2 = (TextView)convertView.findViewById(R.id.pl_name);
TextView t3 = (TextView)convertView.findViewById(R.id.pl_score);

Data_LV d = getItem(position);
t1.setText(d.id);
t2.setText(d.name);
t3.setText(d.score);


return convertView;
}

}

Data_LV

package com.wordpress.jimmaru.tutorial.SimpleGame;

public class Data_LV {
String id;
String name;
String score;
}

记录错误 enter image description here

UPD 我发现上下文不为空。使用日志我得到了 context=android.app.Application@4266f9e0.. 所以这不是上下文问题。数据也满了。所以也许是 R.layout.item 中的问题?)

最佳答案

终于找到问题所在了。感谢所有提供帮助的人,问题出在 lvrecords 本身。它是空的。这就是为什么。在我的项目中,我有 2 个布局文件夹 - 用于纵向和横向模式。在这个应用程序中,我从不使用纵向模式。一些纵向 View 的 xml 文件只是空的......我感到羞耻,但这有效,因为我将我的应用程序限制为仅使用横向模式。我实际上忘记了这些文件是空的,比如 records.xml。而且我认为 Eclipse 将只接受横向模式 xml 文件,就像它一直做的那样,但在这里它没有。因此,当我将 listview 添加到 portrait 文件夹中的 records.xml 时,它起作用了。我道歉,因为除了我没有人知道这一点。连我都忘记了。

关于android - ListView SetAdapter NullPointerException异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22787815/

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