Android 如何从ListView获取数据和视图

Android 如何从ListView获取数据和视图,android,listview,Android,Listview,大家好: 我希望有人能在这里帮助我,由查询生成的光标用简单列表项定义的布局填充ListView。 要创建意图,我需要单击视图的第一个字符串,但在要执行的字符串中,我有如下内容 android.widget。TextView@411fbfb8 现在是代码。 我不明白哪里出错了 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, columns

大家好: 我希望有人能在这里帮助我,由查询生成的光标用简单列表项定义的布局填充
ListView
。 要创建意图,我需要单击视图的第一个字符串,但在要执行的字符串中,我有如下内容

android.widget。TextView@411fbfb8

现在是代码。 我不明白哪里出错了

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, columns, ids, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);

    final ListView myList=(ListView)findViewById(R.id.listView1);
    myList.setAdapter(adapter);
    myList.setClickable(true);

    /*
     * Click Listener
     */
    myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> l, View v, int position, long id)
        {
            Log.v("io", "start");
            Intent intent = new Intent(MainActivity.this, WorkActivity.class);

            View buff = myList.getChildAt(position);
            String toGo = buff.findViewById(android.R.id.text1).toString();

            Log.v("io",toGo);
            intent.putExtra("dname", toGo);
            startActivity(intent);
        }
    } );
SimpleCursorAdapter=新的SimpleCursorAdapter(这个,android.R.layout.simple\u list\u item\u 2,游标,列,id,游标adapter.FLAG\u REGISTER\u CONTENT\u OBSERVER);
最终ListView myList=(ListView)findViewById(R.id.listView1);
myList.setAdapter(适配器);
myList.setClickable(真);
/*
*单击侦听器
*/
myList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(适配器视图l、视图v、内部位置、长id)
{
Log.v(“io”、“开始”);
意向意向=新意向(MainActivity.this、WorkActivity.class);
View buff=myList.getChildAt(位置);
字符串toGo=buff.findviewbyd(android.R.id.text1.toString();
Log.v(“io”,多哥);
意图.putExtra(“dname”,多哥);
星触觉(意向);
}
} );
试试:


onItemClick
中,您可以通过
AdapterView
参数检索链接到
适配器的数据。调用
getItemAtPosition(int)
可以访问与所选项目关联的数据

myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> l, View v, int position, long id)
        {
            Log.v("io", "start");
            Intent intent = new Intent(MainActivity.this, WorkActivity.class);

            View buff = myList.getChildAt(position);
            String toGo = l.getItemAtPosition(position);

            Log.v("io",toGo);
            intent.putExtra("dname", toGo);
            startActivity(intent);
        }
    } );
myList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(适配器视图l、视图v、内部位置、长id)
{
Log.v(“io”、“开始”);
意向意向=新意向(MainActivity.this、WorkActivity.class);
View buff=myList.getChildAt(位置);
字符串toGo=l.getItemAtPosition(位置);
Log.v(“io”,多哥);
意图.putExtra(“dname”,多哥);
星触觉(意向);
}
} );
//

myList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(适配器视图l、视图v、内部位置、长id)
{
Log.v(“io”、“开始”);
意向意向=新意向(MainActivity.this、WorkActivity.class);
//View buff=myList.getChildAt(位置);
//字符串toGo=buff.findviewbyd(android.R.id.text1.toString();
字符串toGo=(TextView)v.getText();
Log.v(“io”,多哥);
意图.putExtra(“dname”,多哥);
星触觉(意向);
}
} );

要获取视图,请执行以下操作:

LinearLayout row = (LinearLayout) ((LinearLayout)v);
RelativeLayout
而不是
LinearLayout
,如果您的情况是这样的话

然后根据文本视图的顺序,应用以下代码获取文本视图的文本:

TextView column = (TextView)row.getChildAt(0);
String text = column.getText().toString();

希望此帮助

工作正常。谢谢,我完全忘了在TextView中进行转换。在onItemClick listener视图中,v是行。在您的例子中,它是textview。非常简单的实现。谢谢
LinearLayout row = (LinearLayout) ((LinearLayout)v);
TextView column = (TextView)row.getChildAt(0);
String text = column.getText().toString();