Android 如何从ListView获取项目

Android 如何从ListView获取项目,android,xml,sqlite,android-layout,listview,Android,Xml,Sqlite,Android Layout,Listview,我正在尝试键入强制转换数据,但当我在onItemClick(…)下写入TextView clickData=(TextView)view时,logcat显示消息 java.lang.ClassCastException:android.widget.RelativeLayout不能强制转换为android.widget.TextView如何从单击的ListView获取项目 这属于main活动: public class ListViewForAllContact extends AppCo

我正在尝试键入强制转换数据,但当我在
onItemClick(…)下写入
TextView clickData=(TextView)view
时,
logcat显示消息

java.lang.ClassCastException:android.widget.RelativeLayout不能强制转换为android.widget.TextView
如何从单击的
ListView
获取项目

这属于
main活动

   public class ListViewForAllContact extends AppCompatActivity {
            ListView myListView;
            protected  void onCreate(Bundle savedInstanceState){
                super.onCreate(savedInstanceState);
                setContentView(R.layout.listviewforallcontact);



                ContactDatabase onbOfContactDatabase=new ContactDatabase(getBaseContext());

                Cursor mCursor= onbOfContactDatabase.phoneName();

                String[] fromFileName=new String[]{ContactDatabase.NAME};
                int[] toViewId=new int[]{R.id.textView5};
                SimpleCursorAdapter simpleCursorAdapter;

                simpleCursorAdapter=new SimpleCursorAdapter(this,R.layout.forreading,mCursor,fromFileName,toViewId,0);
                 myListView=(ListView)findViewById(R.id.listView);
                myListView.setAdapter(simpleCursorAdapter);

                myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                        TextView clickData=(TextView) view;//becouse of this line error will come.

                        Toast.makeText(getBaseContext(), clickData.getText(), Toast.LENGTH_LONG).show();
                    }
                });

            }
        }
这是第二个包含TextView的xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/textView5"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"/>

</RelativeLayout>

不确定我是否正确理解了您的问题,但我假设您希望以
字符串
的形式获取数据,而不是
文本视图
(后者没有真正意义)

@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Cursor Cursor=(Cursor)simpleCursorAdapter.getItem(位置);
String data=cursor.getString(0);//用所需的列索引替换0
Toast.makeText(getBaseContext(),数据,Toast.LENGTH_LONG.show();
}
使用以下方法:

TextView tv =(TextView) ((ViewGroup) view.getChildAt(0));

它返回父视图,即
RelativeLayout
。你可以改为使用这个代码

RelativeLayout rl = (RelativeLayout)view;
TextView clickData = (TextView)rl.getChildAt(0);

而不是
TextView单击数据=(TextView)视图,写下以下内容:

TextView点击数据=(TextView)view.findViewById(R.id.textView5)

这是因为
onItemClick
接收整个
itemView
,而
itemView
中的父项是一个
RelativeLayout
,不能转换为
TextView
。您需要在父级
项目视图中找到
文本视图

我想我已经回答了
TextView tv =(TextView) ((ViewGroup) view.getChildAt(0));
RelativeLayout rl = (RelativeLayout)view;
TextView clickData = (TextView)rl.getChildAt(0);