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);