Исключение Nullpointer в Listview при использовании пользовательского класса в Android - PullRequest
0 голосов
/ 15 февраля 2012

Здравствуйте, я пытаюсь реализовать просмотр списка, который будет отображать содержимое класса с помощью TextView. Однако адаптер, похоже, не принимает значения объектов, так как выдает исключение нулевого указателя.

это мой пользовательский класс

     public class SubjectClass {

String sName;
String sCode;
String teacher;
}

Ниже приведен код моего CUstomarrayadapter

        public CustomAdap(Activity context, ArrayList<SubjectClass> names) {
    super(context, R.layout.listtempl, names);
    this.context = context;
    this.names = names;
}

public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.listtempl, null, true);
    TextView textView1 = (TextView) rowView.findViewById(R.id.label1);
    TextView textView2 = (TextView) rowView.findViewById(R.id.label2);
    TextView textView3 = (TextView) rowView.findViewById(R.id.label3);
    SubjectClass sClass= (SubjectClass)getItem(position);
    String s1 = sClass.sName;
    String s2 = sClass.sCode;
    String s3 = sClass.teacher;
    Toast.makeText(getContext(), sClass.sCode,Toast.LENGTH_SHORT).show();
    textView1.setText(s1);
    textView2.setText(s2);
    textView3.setText(s3);

    return rowView;
}

это xml-файл, используемый адаптером

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
      android:layout_height="wrap_content" >
     <TextView android:text="@+id/label1" android:textColor="#F1235AFA"   android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/label" android:layout_alignParentTop="true" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_alignParentLeft="true"></TextView>
<TextView android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView2" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_alignBaseline="@+id/textView1" android:layout_alignBottom="@+id/label2" android:layout_alignParentLeft="true"></TextView>
<TextView android:text="TextView" android:textColor="#2CD7E0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView1" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_below="@+id/label" android:layout_toRightOf="@+id/label3" android:layout_marginLeft="15dp"></TextView>

         </RelativeLayout>

Это моя деятельность

    public class SampleActivity extends Activity 
     {
    ListView listview;
   CustomAdap adapter;
   ArrayList<SubjectClass> values = new ArrayList<SubjectClass>();


@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.list1);
    SubjectClass subjectClass = new SubjectClass();
    subjectClass.sCode="cs9410";
    subjectClass.sName="Principles of management";
    subjectClass.teacher="xyz";
    values.add(subjectClass);
    SubjectClass subjectClass1 = new SubjectClass();
    subjectClass1.sCode="cs9401";
    subjectClass1.sName="Ethics";
    subjectClass1.teacher="xxx";
    values.add(subjectClass1);

    listview =(ListView) findViewById(R.id.lv1);
    adapter = new CustomAdap(this, values);
    listview.setAdapter(adapter);
}

} //

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

В файле макета строки измените android:text="@+id/label1" на android:id="@+id/label1".Для всех 3 TextView:

 SubjectClass sClass = (SubjectClass) names.get(position);
0 голосов
/ 15 февраля 2012

Я считаю, что вам нужно изменить код на

 SubjectClass sClass= names.get(position);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...