Android: убедитесь, что курсор инициализирован правильно - PullRequest
0 голосов
/ 01 мая 2020

Я хочу показать некоторые данные в виде списка. не все данные в таблице

У меня ошибка «Не удалось прочитать строку 0, столбец 2 из CursorWindow. Убедитесь, что курсор инициализирован правильно, прежде чем получить доступ к данным из него». Я пытаюсь составить список дел для Android.

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

Ошибка в этой строке в классе: String Name_s = data.getString(2);

populateView();

ListViewContent. java

public class ListViewContent extends AppCompatActivity {
DatabaseHelper dbhp;

    ArrayList<DataContent> listContent = new ArrayList<>();
    ListView listView;

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

        listView = (ListView) findViewById(R.id.listView);
        dbhp = new DatabaseHelper(this);

        populateView();
        CustomAdapter adapter = new CustomAdapter(this, R.layout.custom_listview_layout, listContent);
        listView.setAdapter(adapter);


    }

    private void populateView() {
        Cursor data = dbhp.getContent();
        while (data.moveToNext()) {

            int IDMushroom = data.getInt(0);
            String Name = data.getString(1);
            String Name_s = data.getString(2);
            String Type = data.getString(3);
            String Properties = data.getString(4);
            byte[] MushroomImage = data.getBlob(5);
            listContent.add(new DataContent(IDMushroom, Name, Name_s,Type, Properties, MushroomImage));


        }
    }

    public class CustomAdapter extends BaseAdapter {

        private Context context;
        private int layout;
        ArrayList<DataContent> content;

        public CustomAdapter(Context context, int layout, ArrayList<DataContent> content) {
            this.context = context;
            this.layout = layout;
            this.content = content;
        }


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

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

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


        private class ViewHolder {

            TextView txtName, txtType;
            ImageView imageMushroom;

        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = convertView;
            ViewHolder holder;

            if (row == null) {

                LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
                row = inflater.inflate(layout, null);
                holder = new ViewHolder();
                holder.txtName = (TextView) row.findViewById(R.id.name);
                holder.txtType = (TextView) row.findViewById(R.id.type);
                holder.imageMushroom = (ImageView) row.findViewById(R.id.imgV);
                row.setTag(holder);


            } else {

                holder = (ViewHolder) row.getTag();

            }

            final DataContent dc = content.get(position);
            holder.txtName.setText(dc.GetName());
            holder.txtType.setText(dc.GetType());
            byte[] heroImage = dc.GetImage();
            Bitmap bitmap = BitmapFactory.decodeByteArray(heroImage, 0, heroImage.length);
            holder.imageMushroom.setImageBitmap(bitmap);

            return row;
        }
    } 
}```






1 Ответ

0 голосов
/ 01 мая 2020
  1. Индекс начала курсора с 0.
  2. Следует использовать String Name = data.getString(data.getColumnIndex(Database.KEY_NAME))

вместо

String Name = data.getString(1)

То же самое относится и к другим столбцам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...