Подсветка выбранного элемента списка из базы данных? - PullRequest
1 голос
/ 06 мая 2019

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

picture one verse select

picture two verse highlight

здесь, если кто-нибудь щелкнет по стиху 13, все стихи 1-25 будут показаны, но только выделите стих 13 в следующем упражнении, как это можно сделать, вот мой код

    import android.content.Context;
    import android.content.Intent;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.support.v7.widget.SearchView;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;


    import java.util.ArrayList;

    public class Chapters extends AppCompatActivity {
        private ListView listView;
        private ArrayList<String> stringArrayList;
        private ArrayAdapter<String> adapter;
        private DatabaseHelper mDBHelper;
        private SQLiteDatabase mDb;
        private   int booknumber;
        private  String bookname;
        TextView setbookname;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_chapters);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setbookname=(TextView)findViewById(R.id.bookname);
            Intent mIntent = getIntent();
             booknumber= mIntent.getIntExtra("booknumber", 0);
             bookname=mIntent.getStringExtra("bookname");


             setbookname.setText(bookname);

            toolbar.setTitle("");
            setSupportActionBar(toolbar);
            if (getSupportActionBar() != null) {
                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                getSupportActionBar().setDisplayShowHomeEnabled(true);
            }

            Toast.makeText(this, ""+booknumber, Toast.LENGTH_SHORT).show();

            setData();

            listView =findViewById(R.id.list);

            adapter = new ChapterAdopter(Chapters.this, 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) {

                    int chapternumber=position+1;

                    Toast.makeText(Chapters.this, ""+chapternumber, Toast.LENGTH_SHORT).show();

                    Intent intent=new Intent(Chapters.this,Verse.class);

                  intent.putExtra("Booknumber",booknumber);

                  intent.putExtra("Chapternumber",chapternumber);


               startActivity(intent);
                }
            });

        }



        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // handle arrow click here
            if (item.getItemId() == android.R.id.home) {
                onBackPressed();

            }

            return super.onOptionsItemSelected(item);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            MenuInflater inflater=getMenuInflater();

            inflater.inflate(R.menu.chapter,menu);
            MenuItem menuItem=menu.findItem(R.id.chapter_search);

            SearchView searchView=(SearchView)menuItem.getActionView();



            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String s) {
                    return false;
                }

                @Override
                public boolean onQueryTextChange(String s) {
                    return false;
                }
            });
            return  super.onCreateOptionsMenu(menu);
        }

        private void setData() {



            stringArrayList = new ArrayList<>();

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

            Cursor cursor = mDb.rawQuery("select DISTINCT c from t_asv where b="+booknumber, new String[]{});


            if(cursor!=null && cursor.getCount() > 0)
            {
                if (cursor.moveToFirst())
                {
                    do {
                        stringArrayList.add(cursor.getString(0));
                    } while (cursor.moveToNext());
                }
            }
        }


    }



package bible.swordof.God;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class Verse extends AppCompatActivity {
    private ListView listView;
    private ArrayList<String> stringArrayList;
    private ArrayAdapter<String> adapter;
    private DatabaseHelper mDBHelper;
    private SQLiteDatabase mDb;
    private int booknumber;
    private  int chapternumber;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_verse);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        Intent mIntent = getIntent();
         booknumber = mIntent.getIntExtra("Booknumber", 0);
        chapternumber= mIntent.getIntExtra("Chapternumber", 0);
        toolbar.setTitle("");
        setSupportActionBar(toolbar);
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }

        setData();

        listView = findViewById(R.id.list);

        adapter = new VerseAdopter(Verse.this, R.layout.item_listview, stringArrayList);


        Toast.makeText(this, ""+booknumber, Toast.LENGTH_SHORT).show();

        listView.setAdapter(adapter);


    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle arrow click here
        if (item.getItemId() == android.R.id.home) {
          onBackPressed();
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        MenuInflater inflater = getMenuInflater();

        inflater.inflate(R.menu.chapter, menu);
        MenuItem menuItem = menu.findItem(R.id.chapter_search);

        SearchView searchView = (SearchView) menuItem.getActionView();


        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                return false;
            }
        });
        return super.onCreateOptionsMenu(menu);
    }

    private void setData() {


        stringArrayList = new ArrayList<>();

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

        Cursor cursor = mDb.rawQuery("select  v FROM t_asv where b="+booknumber+" AND c="+chapternumber+";", new String[]{});


        if (cursor != null && cursor.getCount() > 0) {
            if (cursor.moveToFirst()) {
                do {
                    stringArrayList.add(cursor.getString(0));
                } while (cursor.moveToNext());
            }
        }
    }


}

1 Ответ

0 голосов
/ 07 мая 2019

Похоже, что вы передаете выбранный стих как главу, а затем в запросе Cursor cursor = mDb.rawQuery("select v FROM t_asv where b="+booknumber+" AND c="+chapternumber+";", new String[]{});, поэтому выбираете все стихи из пропущенной книги / главы.

Возможно, вам нужно передать значение щелчка как стих, а также книгу и главу и использовать запрос, включающий стих в предложении WHERE, возможно, cursor = mDb.rawQuery("select v FROM t_asv where b="+booknumber+" AND c="+chapternumber+" AND v=" + versenumber + " ;", new String[]{});

...