Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 如何在Hashmap中放置两个值_Android_Sqlite_Android Recyclerview_Hashmap_Android Cardview - Fatal编程技术网

Android 如何在Hashmap中放置两个值

Android 如何在Hashmap中放置两个值,android,sqlite,android-recyclerview,hashmap,android-cardview,Android,Sqlite,Android Recyclerview,Hashmap,Android Cardview,你好,我在androidstudio中构建了一个字典应用程序 通过搜索“word”,应显示“def”和“desc” 但是它不显示desc值,因为HashMap只放一个值,我怎么能放两个值并显示desc值呢 我的模型是 public class DictObjectModel { String word, def,desc; public DictObjectModel(String word, String def,String desc){ this.word=word;

你好,我在androidstudio中构建了一个字典应用程序

通过搜索“word”,应显示“def”和“desc”

但是它不显示desc值,因为HashMap只放一个值,我怎么能放两个值并显示desc值呢

我的模型是

public class DictObjectModel {

    String word, def,desc;

public DictObjectModel(String word, String def,String desc){

    this.word=word;
    this.def = def;
    this.desc = desc;


    }
public  String getWord()
{
    return word;
}

    public  String getDef()
    {
        return def;
    }

    public String getDesc() {
        return desc;
    }
}
我的搜索活动是

private static RecyclerView.Adapter adapter;
    private RecyclerView.LayoutManager layoutManager;
    private static RecyclerView recyclerView;
    public static ArrayList<DictObjectModel> data;
    DatabaseHelper db ;

    ArrayList<String> wordcombimelist;
    ArrayList<String> defcombimelist;
    ArrayList<String> desccombimelist;

    LinkedHashMap<String,String> namelist;
    SearchView searchView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search_activity );
        recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
        recyclerView.setHasFixedSize(true);
        db= new DatabaseHelper(this);
        searchView = (SearchView) findViewById(R.id.searchView);
        searchView.setQueryHint("Search Here");
        searchView.setQueryRefinementEnabled(true);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        data = new ArrayList<DictObjectModel>();
        fetchData();

        searchView.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                searchView.setIconified( false );
            }
        } );
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {return  false; }

            @Override
            public boolean onQueryTextChange(String newText) {


                newText = newText.toLowerCase();

                final ArrayList<DictObjectModel> filteredList = new ArrayList<DictObjectModel>();

                for (int i = 0; i < wordcombimelist.size(); i++) {

                    final String text = wordcombimelist.get(i).toLowerCase();
                    if (text.contains(newText)) {

                        filteredList.add(new DictObjectModel(wordcombimelist.get(i),defcombimelist.get(i),desccombimelist.get( i )));
                    }
                }
                adapter = new CustomAdapter(filteredList);
                recyclerView.setAdapter(adapter);


                return true;
            }
        });


    }
    public void fetchData()
    {
        db =new DatabaseHelper(this);
        try {

            db.createDataBase();
            db.openDataBase();

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        namelist=new LinkedHashMap<>();
        int ii;
        SQLiteDatabase sd = db.getReadableDatabase();
        Cursor cursor = sd.query("content" ,null, null, null, null, null, null);
        ii=cursor.getColumnIndex("word");

        wordcombimelist=new ArrayList<String>();
        defcombimelist= new ArrayList<String>();
        desccombimelist= new ArrayList<String>();
        while (cursor.moveToNext()){
            namelist.put(cursor.getString(ii), cursor.getString(cursor.getColumnIndex("def")));
        }
        Iterator entries = namelist.entrySet().iterator();
        while (entries.hasNext()) {
            Map.Entry thisEntry = (Map.Entry) entries.next();
            wordcombimelist.add(String.valueOf(thisEntry.getKey()));
            defcombimelist.add("- "+String.valueOf(thisEntry.getValue()));
            desccombimelist.add("- "+String.valueOf(thisEntry.getValue()));

        }

        for (int i = 0; i < wordcombimelist.size(); i++) {
          data.add(new DictObjectModel(wordcombimelist.get(i), defcombimelist.get(i),desccombimelist.get(i)));
          }
        adapter = new CustomAdapter(data);
        recyclerView.setAdapter(adapter);
    }
}
私有静态RecyclerView.Adapter;
private RecyclerView.LayoutManager LayoutManager;
私有静态RecyclerView RecyclerView;
公共静态数组列表数据;
数据库辅助数据库;
ArrayList单词列表;
ArrayList defcombimelist;
ArrayList描述列表;
LinkedHashMap名称列表;
搜索视图搜索视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.search_活动);
recyclerView=(recyclerView)findViewById(R.id.my\u recycler\u视图);
recyclerView.setHasFixedSize(true);
db=新的DatabaseHelper(此);
searchView=(searchView)findviewbyd(R.id.searchView);
searchView.setQueryHint(“在此处搜索”);
searchView.setQueryRefinementEnabled(true);
layoutManager=新的LinearLayoutManager(此);
recyclerView.setLayoutManager(layoutManager);
setItemAnimator(新的DefaultItemAnimator());
数据=新的ArrayList();
fetchData();
searchView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
searchView.setIconified(false);
}
} );
searchView.setOnQueryTextListener(新的searchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){return false;}
@凌驾
公共布尔onQueryTextChange(字符串newText){
newText=newText.toLowerCase();
最终ArrayList filteredList=新ArrayList();
对于(int i=0;i

有人能建议我如何解决这个问题吗?

您需要将
名称列表的类型从
LinkedHashMap
更改为
LinkedHashMap
。当您从数据库加载数据时,需要遍历
cursor
中的每个项目,从中构建一个
DictObjectModel
对象,并将
DictObjectModel
对象放入
LinkedHashMap
中,类似于
namelist.put(cursor.getString(ii),myDictObjectModel)
。您可能需要将
名称列表
重命名为
字典
。希望这有帮助