Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 如何在realm数据库的listview中查看查询的数据?_Android_Listview_Realm - Fatal编程技术网

Android 如何在realm数据库的listview中查看查询的数据?

Android 如何在realm数据库的listview中查看查询的数据?,android,listview,realm,Android,Listview,Realm,我不熟悉领域数据库,我面临的问题是领域数据库从数据库中查询数据。从数据库中查询的数据如下图所示 我需要在listview中逐个查看查询的数据 用于将数据添加到领域数据库的代码 public class MainActivity extends AppCompatActivity { private Realm mRealm; EditText editText; Button btn,btnNext; @Override protected voi

我不熟悉领域数据库,我面临的问题是领域数据库从数据库中查询数据。从数据库中查询的数据如下图所示

我需要在listview中逐个查看查询的数据

用于将数据添加到领域数据库的代码

  public class MainActivity extends AppCompatActivity {

    private Realm mRealm;
    EditText editText;
    Button btn,btnNext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText)findViewById(R.id.editText);
        btn = (Button)findViewById(R.id.button);
        btnNext = (Button)findViewById(R.id.button2);
        Realm.init(getApplicationContext());
        mRealm = Realm.getDefaultInstance();
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String newNames = editText.getText().toString();
                mRealm.beginTransaction();
                MyNames names = mRealm.createObject(MyNames.class);
                names.setName(newNames);
                mRealm.commitTransaction();
                editText.setText("");
            }
        });
        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent  = new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        });



    }

}
 public class Main2Activity extends AppCompatActivity {

    ListView listview;
    private Realm mRealm;
    Button next;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        listview = (ListView)findViewById(R.id.list);
        next = (Button)findViewById(R.id.button2);

        listdata();
        listAdapter();
    }

    public List<RealmResults<MyNames>> listdata()
    {
        List<RealmResults<MyNames>> names = new ArrayList<>();
        mRealm = Realm.getDefaultInstance();
        RealmQuery<MyNames> data = mRealm.where(MyNames.class);
        RealmResults<MyNames> newData = data.findAll();
        names.add(newData);
        return  names;
    }

    public void listAdapter()
    {
        List<RealmResults<MyNames>> newData = this.listdata();
        ArrayAdapter adapter = new ArrayAdapter(this,R.layout.list_simple,R.id.textname,newData);
        listview.setAdapter(adapter);
    }
 public class Main2Activity extends AppCompatActivity {
    @BindView(R.id.list)
    ListView listview;

    Realm realm;

    @OnClick(R.id.button2) 
    public void clickButton2() {
        // do next
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        ButterKnife.bind(this);
        realm = Realm.getDefaultInstance();
        RealmResults<MyNames> results = realm.where(MyNames.class).findAllAsync();
        MyNamesAdapter myNamesAdapter = new MyNamesAdapter(results);
        listView.setAdapter(myNamesAdapter);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        realm.close();
    }
}
用于从数据库查询数据的代码

  public class MainActivity extends AppCompatActivity {

    private Realm mRealm;
    EditText editText;
    Button btn,btnNext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText)findViewById(R.id.editText);
        btn = (Button)findViewById(R.id.button);
        btnNext = (Button)findViewById(R.id.button2);
        Realm.init(getApplicationContext());
        mRealm = Realm.getDefaultInstance();
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String newNames = editText.getText().toString();
                mRealm.beginTransaction();
                MyNames names = mRealm.createObject(MyNames.class);
                names.setName(newNames);
                mRealm.commitTransaction();
                editText.setText("");
            }
        });
        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent  = new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        });



    }

}
 public class Main2Activity extends AppCompatActivity {

    ListView listview;
    private Realm mRealm;
    Button next;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        listview = (ListView)findViewById(R.id.list);
        next = (Button)findViewById(R.id.button2);

        listdata();
        listAdapter();
    }

    public List<RealmResults<MyNames>> listdata()
    {
        List<RealmResults<MyNames>> names = new ArrayList<>();
        mRealm = Realm.getDefaultInstance();
        RealmQuery<MyNames> data = mRealm.where(MyNames.class);
        RealmResults<MyNames> newData = data.findAll();
        names.add(newData);
        return  names;
    }

    public void listAdapter()
    {
        List<RealmResults<MyNames>> newData = this.listdata();
        ArrayAdapter adapter = new ArrayAdapter(this,R.layout.list_simple,R.id.textname,newData);
        listview.setAdapter(adapter);
    }
 public class Main2Activity extends AppCompatActivity {
    @BindView(R.id.list)
    ListView listview;

    Realm realm;

    @OnClick(R.id.button2) 
    public void clickButton2() {
        // do next
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        ButterKnife.bind(this);
        realm = Realm.getDefaultInstance();
        RealmResults<MyNames> results = realm.where(MyNames.class).findAllAsync();
        MyNamesAdapter myNamesAdapter = new MyNamesAdapter(results);
        listView.setAdapter(myNamesAdapter);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        realm.close();
    }
}

请帮助如何在listview中逐个查看数据库中查询的数据。

newData
是一个
列表。listview显示
列表
中的项目,这些项目是
RealmResult
,它是自己的“集合”,导致列表仅显示一个包含所有对象的项目

但是,您希望在listview中显示单个MyNames项目,而不是RealmResults

您可能正在寻找类似的内容(简化了一点)

public List listdata()
{
mRealm=Realm.getDefaultInstance();
返回mRealm.where(MyNames.class).findAll();
}
public-void-listAdapter()
{
列表名称=listdata();
ArrayAdapter=新的ArrayAdapter(这个,R.layout.list_simple,R.id.textname,newData);
setAdapter(适配器);
}

另外,不要忘记在
活动#onDestroy()中关闭领域

使用
RealmBaseAdapter

用于从数据库查询数据的代码

  public class MainActivity extends AppCompatActivity {

    private Realm mRealm;
    EditText editText;
    Button btn,btnNext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText)findViewById(R.id.editText);
        btn = (Button)findViewById(R.id.button);
        btnNext = (Button)findViewById(R.id.button2);
        Realm.init(getApplicationContext());
        mRealm = Realm.getDefaultInstance();
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String newNames = editText.getText().toString();
                mRealm.beginTransaction();
                MyNames names = mRealm.createObject(MyNames.class);
                names.setName(newNames);
                mRealm.commitTransaction();
                editText.setText("");
            }
        });
        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent  = new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        });



    }

}
 public class Main2Activity extends AppCompatActivity {

    ListView listview;
    private Realm mRealm;
    Button next;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        listview = (ListView)findViewById(R.id.list);
        next = (Button)findViewById(R.id.button2);

        listdata();
        listAdapter();
    }

    public List<RealmResults<MyNames>> listdata()
    {
        List<RealmResults<MyNames>> names = new ArrayList<>();
        mRealm = Realm.getDefaultInstance();
        RealmQuery<MyNames> data = mRealm.where(MyNames.class);
        RealmResults<MyNames> newData = data.findAll();
        names.add(newData);
        return  names;
    }

    public void listAdapter()
    {
        List<RealmResults<MyNames>> newData = this.listdata();
        ArrayAdapter adapter = new ArrayAdapter(this,R.layout.list_simple,R.id.textname,newData);
        listview.setAdapter(adapter);
    }
 public class Main2Activity extends AppCompatActivity {
    @BindView(R.id.list)
    ListView listview;

    Realm realm;

    @OnClick(R.id.button2) 
    public void clickButton2() {
        // do next
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        ButterKnife.bind(this);
        realm = Realm.getDefaultInstance();
        RealmResults<MyNames> results = realm.where(MyNames.class).findAllAsync();
        MyNamesAdapter myNamesAdapter = new MyNamesAdapter(results);
        listView.setAdapter(myNamesAdapter);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        realm.close();
    }
}
公共类Main2活动扩展了AppCompative活动{
@BindView(R.id.list)
列表视图列表视图;
境界;
@OnClick(R.id.button2)
公共作废点击按钮2(){
//下一步做
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
把(这个)绑起来;
realm=realm.getDefaultInstance();
RealmResults results=realm.where(MyNames.class).findalsync();
MyNameAdapter MyNameAdapter=新的MyNameAdapter(结果);
setAdapter(myNamesAdapter);
}
@凌驾
公共空间{
super.ondestory();
realm.close();
}
}

公共类MyNameAdapter扩展了RealmBaseAdapter{
私有静态类视图持有者{
文本查看文本;
}
公共MyListAdapter(OrderedRealmCollection realmResults){
超级(realmResults);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
持票人持票人;
if(convertView==null){
convertView=LayoutInflater.from(parent.getContext())
.充气(android.R.layout.simple_list_item_1,父项,false);
viewHolder=新的viewHolder();
viewHolder.text=(TextView)convertView.findViewById(android.R.id.text1);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
如果(adapterData!=null){
MyNames项=adapterData.get(位置);
viewHolder.text.setText(item.getName());
}
返回视图;
}
}

因此,您应该将
RealmResults
RealmBaseAdapter
from

List names=new ArrayList()但为什么?我有一个疑问,只有在使用添加到调用
Adapter.notifyDataSetChanged()的
RealmChangeListener
中的
RealmResults
时,我才能使用自定义适配器而不是使用RealmBaseAdapter
@PrabhaKaran下次也请参考说明如何将Realm与ListView一起使用的文档示例。现在,在ListView中逐个查看数据,但数据类似于MyNames=[{names:hi}],MyNames=[{names:Kumar}]……在这里,我如何删除括号并仅查看您需要执行的值
viewHolder.text.xt(item.getName());
而不是
item.toString()
,您不应该使用ArrayAdapter,它使用
toString()
现在在listview中逐个查看数据,但数据类似于MyNames=[{names:hi}],MyNames=[{names:Kumar}]…在本例中,如何删除括号并仅查看值如果要使用ArrayAdapter,则必须从每个MyName对象收集字符串并将该收集传递到适配器构造函数。否则,最好使用其他解决方案。它更适合于为您的答案@Tim Castelijnsure自定义数据显示TKH。虽然它没有解释当前代码不起作用的原因,但其他答案中的解决方案更好。您可能希望接受该答案