Как показать конкретные данные из базы данных SQLite в Android ListView

У меня есть одна таблица в базе данных SQLite, которая имеет два поля: одно «b», а другое «n», «b» представляет номер книги, а «n» представляет имена книг. Теперь я успешно извлекаю все поля «n» в моем представлении списка. хочу, чтобы когда какой-либо пользователь нажимал на определенный элемент списка, отображался номер книги b, который в моей базе данных, например, у меня есть книга n = Genesis, когда кто-либо нажимал на Genesis, он показывает номер книги, например b = 1; здесь мой код структура базы данных

  */

    public class Bookname extends Fragment {
        private ListView listView;
        private ArrayList<String> stringArrayList;
        private ArrayAdapter<String> adapter;
        private DatabaseHelper mDBHelper;
        private SQLiteDatabase mDb;
       boolean book;

        public Bookname() {
            // Required empty public constructor
        }


        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view = inflater.inflate(R.layout.fragment_bookname, container, false);

            setData();
            listView = view.findViewById(R.id.list);
            adapter = new ListViewAdapter((MainActivity) getContext(), R.layout.item_listview, stringArrayList);
            listView.setAdapter(adapter);

            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {




                }
            });
            return view;
        }

        private void setData() {


            stringArrayList = new ArrayList<>();

            mDBHelper = new DatabaseHelper(getContext());
            mDb = mDBHelper.getReadableDatabase();

            Cursor cursor = mDb.rawQuery("SELECT b, n  FROM key_english;", new String[]{});

            if (cursor.getCount() == 0) {
                Toast.makeText(getContext(), "NO DATA FOUND", Toast.LENGTH_SHORT).show();
            } else {
                while (cursor.moveToNext()) {

                    stringArrayList.add(cursor.getString(1));


                }
            }
        }
    }


Myadopter class


package bible.swordof.God;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.amulyakhare.textdrawable.TextDrawable;
import com.amulyakhare.textdrawable.util.ColorGenerator;

import java.util.List;

public class ListViewAdapter extends ArrayAdapter<String> {

    private MainActivity activity;
    private List<String> friendList;

    public ListViewAdapter(MainActivity context, int resource, List<String> objects) {
        super(context, resource, objects);
        this.activity = context;
        this.friendList = objects;
    }

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

    @Override
    public String getItem(int position) {
        return friendList.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        // If holder not exist then locate all view from UI file.
        if (convertView == null) {
            // inflate UI from XML file
            convertView = inflater.inflate(R.layout.item_listview, parent, false);
            // get all UI view
            holder = new ViewHolder(convertView);
            // set tag for holder
            convertView.setTag(holder);
        } else {
            // if holder created, get tag from view
            holder = (ViewHolder) convertView.getTag();
        }

        holder.friendName.setText(getItem(position));

        //get first letter of each String item
        String firstLetter = String.valueOf(getItem(position).charAt(0));

        ColorGenerator generator = ColorGenerator.MATERIAL; // or use DEFAULT
        // generate random color
        int color = generator.getColor(getItem(position));

        TextDrawable drawable = TextDrawable.builder()
                .buildRound(firstLetter, color); // radius in px

        holder.imageView.setImageDrawable(drawable);

        return convertView;
    }

    private class ViewHolder {
        private ImageView imageView;
        private TextView friendName;

          public ViewHolder(View v) {
            imageView = (ImageView) v.findViewById(R.id.image_view);
            friendName = (TextView) v.findViewById(R.id.text);
        }
    }
}



[My database structure][1]


  [1]: https://i.stack.imgur.com/7aXut.png

Девеш Кумар Сингх, пожалуйста, скажи

joshua850 04.05.2019 08:23

используйте SimpleCursorAdapter и внутри onItemClick позвоните parent.getItemAtPosition(position)

pskink 04.05.2019 08:29

pskink я не хочу получать позицию элемента, я хочу b=число, которое в моей базе данных

joshua850 04.05.2019 08:31

pskink, я редактирую свой вопрос, пожалуйста, редактируйте свой ответ, сэр.

joshua850 04.05.2019 08:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Создать модель Нравиться:

public class BookData {

private String bookNo;
private String bookName;

BookData(String bookNo, String bookName){
    this.bookNo = bookNo;
    this.bookName = bookName;
}

public String getBookNo() {
    return bookNo;
}

public void setBookNo(String bookNo) {
    this.bookNo = bookNo;
}

public String getBookName() {
    return bookName;
}

public void setBookName(String bookName) {
    this.bookName = bookName;
} }

Создайте объект ArrayList, например:

ArrayList<BookData> stringArrayList = new ArrayList<>();

Храните ваши данные в модели

stringArrayList.add(new BookData(cursor.getString(0),cursor.getString(1)));

И получить данные, используя:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 String bookNo = stringArrayList.get(position).getBookNo();
                 Log.e("BookNo : ", bookNo);
            }
        });

сэр, вы использовали пользовательский адаптер, я использовал Arrayadopter, пожалуйста, просмотрите мой код, скажите мне

joshua850 04.05.2019 08:48

Но вы храните только bookName в своем списке!

Dinesh Shingadiya 04.05.2019 08:50

Тогда как вы получите номер книги от вашего адаптера?

Dinesh Shingadiya 04.05.2019 08:50

Другие вопросы по теме