列表视图集适配器在android studio中不起作用

时间:2016-11-30 10:28:08

标签: android listview

我是一个新的Android编程,我在使用时遇到了问题listView.setAdapter();

没有工作,给定java.lang.NullPointerException 有代码,我的项目名称是notbad

EditText textheare;
CheckBox checkBox;
ImageView imageView;
public static final int PICK_IMAGE=1;
Uri selectimage;
Button finn;
ListView listView;
coustem_laout Cous;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.nodbatplus);
    subject=(EditText)findViewById(R.id.subject);
    textheare =(EditText)findViewById(R.id.textheare);
    checkBox =(CheckBox)findViewById(R.id.checkBox);
    imageView =(ImageView)findViewById(R.id.notimg);
    finn=(Button)findViewById(R.id.Fin);
    listView=(ListView)findViewById(R.id.nameList);
    finn.setOnClickListener(this);
    checkBox.setOnCheckedChangeListener(this);
}

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
    if(checkBox.isChecked()){
        opengallary();
    }
    else if (checkBox.isChecked()==false)
        imageView.setImageBitmap(null);


}

public void opengallary(){
    Intent gallary=new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
    startActivityForResult(gallary,PICK_IMAGE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode==PICK_IMAGE && resultCode==RESULT_OK)
    selectimage=data.getData();
    imageView.setImageURI(selectimage);



}

@Override
public void onClick(View v) {
    String n=textheare.getText().toString();
    String s=subject.getText().toString();
    int i = imageView.getImageAlpha();

    SharedPreferences ss =getSharedPreferences(s,MODE_PRIVATE);
    SharedPreferences.Editor editor=ss.edit();
    editor.putString("notbadtext",n);

    editor.putInt("imagehere",i);
    editor.commit();

    Cous=new coustem_laout(this,android.R.layout.simple_list_item_1,imageView,subject);
    listView.setAdapter(Cous);
    finish();
}

并且xb文件跟随notbatplus:



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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="250dp">

        <EditText
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:inputType="textPersonName"
            android:text="Name"
            android:ems="10"
            android:id="@+id/textheare"
            android:layout_alignParentBottom="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/subject" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:text="Name"
            android:ems="10"
            android:layout_marginTop="28dp"
            android:id="@+id/subject"
            android:layout_alignParentTop="true"
            android:layout_alignParentStart="true" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentStart="true"
            android:layout_marginStart="26dp"
            android:layout_marginTop="29dp"
            android:id="@+id/notimg" />

        <CheckBox
            android:text="CheckBox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/checkBox"
            android:layout_alignBottom="@+id/imageView"
            android:layout_alignParentEnd="true"
            android:layout_marginEnd="65dp"
            android:layout_marginBottom="28dp" />

        <Button
            android:text="Finish"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignStart="@+id/checkBox"
            android:layout_marginBottom="37dp"
            android:id="@+id/Fin" />
    </RelativeLayout>
</LinearLayout>
&#13;
&#13;
&#13;

并且有mainActivite:

Button bn;
ListView listView;
notbad no;
String subnot;
int immg;
SharedPreferences sharedPreferences;
coustem_laout Coustem_laout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bn=(Button)findViewById(R.id.addlist);
    listView=(ListView)findViewById(R.id.nameList);

    bn.setOnClickListener(this);
}


@Override
public void onClick(View v)
{
    listView.setVisibility(View.VISIBLE);
    Intent i =new Intent(MainActivity.this,notbad.class);

    startActivity(i);
}

有关于mainActivite的XML文件:

&#13;
&#13;
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.qan.broedc.MainActivity">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerVertical="true"
        android:layout_alignParentEnd="true"
        android:id="@+id/nameList"
        android:fastScrollAlwaysVisible="true"
        android:addStatesFromChildren="false"
        android:visibility="gone" />

    <Button
        android:text="add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginStart="77dp"
        android:layout_marginTop="42dp"
        android:id="@+id/addlist"
        android:onClick="moveto" />
</RelativeLayout>
&#13;
&#13;
&#13;

类适配器:

public class coustem_laout extends ArrayAdapter {

public  final Context c;
public int laout;
public ImageView IMG;
public EditText Texthear;
public View view;
ImageView Addressimage;
TextView sub;
LayoutInflater layoutInflater;


public coustem_laout(Context context, int resource,ImageView img,EditText editText) {
    super(context, resource);
    this.c = context;
    laout=resource;
    IMG=img;
    Texthear=editText;

}

@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {

    layoutInflater=(LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    view = layoutInflater.inflate(laout,parent,false);
    sub=(TextView)view.findViewById(R.id.name_list);
    Addressimage=(ImageView)view.findViewById(R.id.imagelist);
    sub.setText(Texthear.getText().toString());
    Addressimage.setImageAlpha(IMG.getImageAlpha());
    return view;

}

}

有错误:

11-30 04:10:42.909 1427-1427/com.example.qan.broedc E/AndroidRuntime: FATAL EXCEPTION: main
                                                                  java.lang.NullPointerException
                                                                      at com.example.qan.broedc.notbad.onClick(notbad.java:101)
                                                                      at android.view.View.performClick(View.java:4240)
                                                                      at android.view.View$PerformClick.run(View.java:17721)
                                                                      at android.os.Handler.handleCallback(Handler.java:730)
                                                                      at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                      at android.os.Looper.loop(Looper.java:137)
                                                                      at android.app.ActivityThread.main(ActivityThread.java:5103)
                                                                      at java.lang.reflect.Method.invokeNative(Native Method)
                                                                      at java.lang.reflect.Method.invoke(Method.java:525)
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                      at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

您需要在setAdapter方法中设置适配器。创建一个新的Adapter并在该函数中传递它。