我无法获取所点击项目的隐藏字段值。
我跟着SO Post获取了点击的列表视图项的隐藏值,但是
无法获得价值。我得到了ClassCastException
。
代码 -
listView.setOnItemClickListener(new OnItemClickListener()
{
//////////list view on click
public void onItemClick(AdapterView<?> view, View arg1,
int position, long arg3) {
String S = (String)view.getItemAtPosition(position); //This line gives exception
System.out.println("TextView vehicleSrc>>"+S);
//OR
String itemSelected = ((TextView)view.findViewById(R.id.vehicle_source)).getText().toString();
System.out.println("TextView vehicleSrc"+itemSelected); // this is giving blank
}
我的错误日志 -
03-20 12:47:08.742: E/AndroidRuntime(26965): FATAL EXCEPTION: main
03-20 12:47:08.742: E/AndroidRuntime(26965): java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
03-20 12:47:08.742: E/AndroidRuntime(26965): at com.iddl.main.EntryFragment$13$2.onItemClick(UserFragment.java:907)
更新:
我在xml -
中的隐藏字段中定义了上述textview<TextView
android:id="@+id/vehicle_source"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:visibility="gone"/>
现在我尝试将每个listview项的值设置为 -
TextView vehicleSrc = (TextView) vi.findViewById(R.id.vehicle_source);
if(isCondition1)
vehicleSrc.setText("Normal");
else
vehicleSrc.setText("Other");
end
答案 0 :(得分:1)
最后,我获得了所点击项目的隐藏字段值。
所以,它应该是
String itemSelected = ((TextView)arg1.findViewById(R.id.vehicle_source)).getText().toString();
而不是
String itemSelected = ((TextView)view.findViewById(R.id.vehicle_source)).getText().toString();
完整代码 -
listView.setOnItemClickListener(new OnItemClickListener()
{
//////////list view on click
public void onItemClick(AdapterView<?> view, View arg1,
int position, long arg3) {
String itemSelected = ((TextView)arg1.findViewById(R.id.vehicle_source)).getText().toString();
System.out.println("TextView vehicleSrc"+itemSelected);
}
}
答案 1 :(得分:0)
你不能像这里所警告的那样将整数转换为字符串
03-20 12:47:08.742: E/AndroidRuntime(26965): FATAL EXCEPTION: main
03-20 12:47:08.742: E/AndroidRuntime(26965): java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
03-20 12:47:08.742: E/AndroidRuntime(26965): at com.iddl.main.EntryFragment$13$2.onItemClick(UserFragment.java:907)
如果要将整数转换为字符串,可以使用
Integer.toString( i )
像这样一个
String S = Integer.toString(view.getItemAtPosition(position)); //This line gives exception
System.out.println("TextView vehicleSrc>>"+S);
我认为你应该使用android Log.i / Log.d / Log.e来记录任何内容而不是system.out.println:)
答案 2 :(得分:0)
不使用 instancof
投射任何内容所以理想情况下你的代码应该是
Object item = view.getItemAtPosition(position);
if(item instanceof String){
//cast it
}
只需检查您使用的适配器类型.. getItem返回 TYPE 适配器&lt; TYPE &gt;
答案 3 :(得分:0)
试试这个你会得到点击列表的价值
String textOfSelectedItem;
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int id,
long position) {
// TODO Auto-generated method stub
textOfSelectedItem =((TextView) v).getText().toString();
Toast.makeText(getApplicationContext(), "Clicked is " + textOfSelectedItem, Toast.LENGTH_SHORT).show();
}
});