我目前正在学习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 textviewString 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);
就像我说的那样,所有这些错误都是在我试图实现我拥有的自定义行时发生的。所以,如果有人能指出我在这样做的时候出错了,我将不胜感激。
答案 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()