当前位置: 首页 > 知识库问答 >
问题:

Listview选定的项目高亮显示来自数据库?

谢烨烨
2023-03-14

我是android的初学者,创建宗教书籍,我有两个活动,都有列表视图,数据来自sqlite数据库,当我点击任何特定的项目,从第一个活动切换到第二个活动,在第二个活动中显示所有细节,也有列表视图,我的问题是如何突出显示第二个列表项目行,只有特定的项目才突出显示!在图片中显示的例子实际上我想要什么

在这里,如果有人点击第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个答案

红砚文
2023-03-14

看起来您将所选的诗句作为一个章节传递,然后在查询cursor cursor=mdb.rawquery(“select v FROM t_asv where b=”+booknumber+“和c=”+chapternumber+“;”,new string[]{})中选择传递的书/章节中的所有诗句。

您可能需要将单击的值作为verse以及book和chapple,并使用在WHERE子句中包含verse的查询,可能是cursor=MDB.rawQuery(“select v FROM t_asv WHERE b=”+booknumber+“和c=”+chapternumber+“和v=”+versenumber+“;”,new string[]{});

 类似资料:
  • 我一直在制作一个可以在Android中使用ListView的应用程序,但我无法使所选(chacked)项具有不同的背景。我用的是CHOICE_MODE_SINGLE。到目前为止,我的代码是这样的: 我使用的列表视图: (inside layout.xml) 我在适配器中使用的TextView布局: (listItem.xml) 这是我添加适配器的地方: 我确信在单击时选中了正确的项,因为当我调用g

  • 这可能是一个骗局——我找不到它——我基本上只是试图通过提供我自己的ListCellRenler来自定义JComboBox显示: 当我展开JComboBox列表时,组件会正确显示名称。但是,在选择项目时,显示将恢复为myObj的toString()值。 我错过什么了吗?

  • 我想突出显示点击的选定值的背景颜色。我正在演示这个例子,它突出显示了多个选择值。我想在单击以选择一个选项时只突出显示所选的值。

  • 问题内容: 我有两个,一个包含一个由选择查询()填充的客户端列表,另一个包含选定的客户端的详细信息()。我想在显示细节的同时让客户保持选中状态。 XML: Java: 问题答案: 若要在按下时保持列表视图项目的颜色,请在列表视图项目布局中包括以下行: 然后在这样的文件夹中定义: 最后,将此包含在你的中: 这样,在任何时候都只能选择一项。你可以使用以下方式定义颜色值res/values/colors

  • 我试图使用一对剑道下拉列表来过滤AngularJS中的数据集。其中一个数据源使用静态可观察数组按状态筛选数据集;另一个数据源是数据集的“区域ID”列的一组不同值,也存储为可观察数组。当状态下拉列表更改时,区域下拉列表应该从新过滤的数据中重新加载区域列表。这是可行的,但是选定的值最终会被忽略,即使应该代表选定值的模型仍然具有正确的值,并且数据仍然被相同的值正确过滤。打开下拉列表,然后单击它,使其按应

  • 使用本主题在 Dreamweaver 中为模板设置高亮显示首选参数。 使用 Dreamweaver 高亮显示首选参数可以为设计视图中模板的可编辑区域和锁定区域的外框自定义高亮颜色。可编辑区域的颜色出现在模板和基于该模板的文档中。 更改模板高亮颜色 选择“编辑”>“首选参数”(Windows) 或“Dreamweaver”>“首选参数”(Macintosh)。 从左侧的“类别”列表中选择“高亮颜色”