Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义列表视图,SQLite_Android_Sqlite_Listview_Custom Adapter - Fatal编程技术网

Android 自定义列表视图,SQLite

Android 自定义列表视图,SQLite,android,sqlite,listview,custom-adapter,Android,Sqlite,Listview,Custom Adapter,所以我有两个活动:一个是将对象(图像和两个字符串)添加到自定义列表的Main,另一个是显示此列表的Main 我有两门课: public class Activity_4 extends AppCompatActivity { ListView listView; myAdapter mAdapter = null; ArrayList<Object> objectList; @Override protected void onCreate(Bundle savedInstanc

所以我有两个活动:一个是将对象(图像和两个字符串)添加到自定义列表的Main,另一个是显示此列表的Main

我有两门课:

public class Activity_4 extends AppCompatActivity {

ListView listView;
myAdapter mAdapter = null;
ArrayList<Object> objectList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_4);

    listView = (ListView)findViewById(R.id.listView4);
    objectList = new ArrayList<>();

    mAdapter = new myAdapter(this,R.layout.list_row,objectList);
    listView.setAdapter(mAdapter);

    Cursor cursor = Activity_3.sqLiteHelper.getData("SELECT * FROM OBJECT");
    objectList.clear();
    while (cursor.moveToNext()) {
        int id = cursor.getInt(0);
        String main = cursor.getString(1);
        String desc = cursor.getString(2);
        byte[] image = cursor.getBlob(3);
        objectList.add(new Object(image,main,desc, id));
    }
    mAdapter.notifyDataSetChanged();

}

public class Object {
    byte[] imageID;
    String mainText;
    String description;
    int id;

    public Object(byte[] imageID, String mainText, String description, int id) {
        this.imageID = imageID;
        this.mainText = mainText;
        this.description = description;
        this.id = id;

      //getters and setters

    }
public class myAdapter extends BaseAdapter {

    private Context mContext;
    private List<Object> objectList;
    private int layout;

    public myAdapter(Context context,int layout, ArrayList<Object> objectList) {
        this.mContext = context;
        this.layout = layout;
        this.objectList = objectList;
    }

    @Override
    public int getCount() {
        return objectList.size();
    }

    @Override
    public Object getItem (int position) {
        return objectList.get(position);
    }

    @Override
    public long getItemId (int position) {
        return position;
    }


    private class ViewHolder {
        ImageView imageView;
        TextView main,desc;
    }

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

        View row = view;
        ViewHolder holder = new ViewHolder();

        if (row == null) {
            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(layout,null);

            holder.main = (TextView)row.findViewById(R.id.editText);
            holder.desc = (TextView)row.findViewById(R.id.editText2);
            holder.imageView = (ImageView)row.findViewById(R.id.imageView);
            row.setTag(holder);

        } else {
            holder = (ViewHolder) row.getTag();
        }

        Object object = objectList.get(position);
        holder.main.setText(object.getMainText());
        holder.desc.setText(object.getDescription());

        byte[] image = object.getImageID();
        Bitmap bitmap = BitmapFactory.decodeByteArray(image,0,image.length);
        holder.imageView.setImageBitmap(bitmap);

        return row;
    }

}
}
他们正在将对象(图片和两个文本描述)添加到自定义列表视图中,并保存/打开已添加的数据。但我想进入列表查看活动时遇到问题,应用程序正在崩溃。以下是日志:

Process: com.example.charles.cwiczenie3, PID: 6072
                                                                        Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
                                                                            at com.example.karol.cwiczenie3.Activity_4$myAdapter.getView(Activity_4.java:172)
有人知道怎么解决吗?
谢谢:)

请检查R.layout.list\u行是否有Id为editText的TextView


我认为id为editText的R.layout.list_行中没有TextView,因此出现了NullPointerException。

似乎至少有一个id为editText的
视图
editText1
不在
list_行
布局中。您确定该
适配器的布局正确吗?您正在
getView()
中将它们强制转换为
TextView
s,但这些看起来像是
EditText
s的id。是的,您是对的,我将其更改为TextView文件的正确id。但现在我的问题是,它保存的是默认设置的数据,所以是布局列表行中的数据,而不是我插入的数据。
Process: com.example.charles.cwiczenie3, PID: 6072
                                                                        Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
                                                                            at com.example.karol.cwiczenie3.Activity_4$myAdapter.getView(Activity_4.java:172)