使用自定义布局行产生意外错误

时间:2015-04-06 23:34:13

标签: java android

我目前正在学习android并在一些项目上工作......在这一个我有一个列表视图,当我点击它时,我将我点击的行的名称和数据库中的值传递给我的NEXT活动这是100%的工作。

这是我创建代码的主要活动的一部分。在这里我从我的数据库填充listview和其他东西。

lvUsers = (ListView)findViewById(id.lvUsers);
    List<String> listUsers = dbHeplper.getAllUsers();

    if(listUsers != null){

        adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1, android.R.id.text1,listUsers);

       //  adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.test, id.movie_title,listUsers);


        lvUsers.setAdapter(adapter);

        lvUsers.setOnItemClickListener(new OnItemClickListener(){


            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                String product= ((TextView)view).getText().toString();

              //  String product= String.valueOf((TextView)findViewById(id.movie_title));
                // Toast.makeText(getBaseContext(),product,Toast.LENGTH_LONG).show();

                Intent x = new Intent(getApplicationContext(), SingleListItem.class);
                // sending data to new activity
                 x.putExtra("product", product);
                startActivity(x);

            }
        });

此代码工作正常,但是如果你看一下这行,我自己试图自己设置行。 (在主视图中注释)

adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.test, id.movie_title,listUsers);.

添加这个抛出了relativelayout的错误,无法在行

上强制转换为android widget textview
String product= ((TextView)view).getText().toString();

所以我认为这意味着它不知道我指的是哪个textview。所以我将该行编辑为

String product= String.valueOf((TextView)findViewById(id.movie_title));

因为movie_title是测试布局中textview的ID。

然后消失但现在当我单击行而不是获取数据时,我期望像数据库中的行名和数据。我的第二个活动中的textview正在显示

"android.widget.TextView{176f155.v.Ed (more random numbers) app:id/movie_title}

(第二项活动中的一些代码

 Intent i=getIntent();
    String name = i.getStringExtra("product");
     txtName.setText(name);

就像我说的那样,所有这些错误都是在我试图实现我拥有的自定义行时发生的。所以,如果有人能指出我在这样做的时候出错了,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您是否尝试过创建自定义适配器并使其扩展ArrayAdapter?您可以轻松地执行此操作,然后在自定义适配器的getView()内部,您可以使用适当的文本来扩展textview。检查一下:https://stackoverflow.com/a/8166802/1497188

同样String product= String.valueOf((TextView)findViewById(id.movie_title));,此行获取视图的ID,而不是视图中的文本。这样做的适当视图是,从onItemClick()内部,您可以将视图转换/转换为textview,然后在该视图上执行getText().toString()。只需在线搜索如何创建自定义适配器和onItemClick Listener for Adapter

编辑:

public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String data=(String)adapterView.getItemAtPosition(arg2); 

这将至少帮助您从onItemClick()

中获取字符串