0

我无法获取单击项目的隐藏字段值。

我按照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"/>

现在我正在尝试将每个列表视图项的值设置为 -

TextView vehicleSrc = (TextView) vi.findViewById(R.id.vehicle_source);

if(isCondition1)
vehicleSrc.setText("Normal");
else
vehicleSrc.setText("Other");
end
4

4 回答 4

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);
   }
}
于 2013-03-20T08:27:02.753 回答
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 :)

于 2013-03-20T07:28:24.290 回答
0
  1. 永远不要在不使用instancof的情况下投射任何东西

    所以理想情况下你的代码应该是

    对象项目 = view.getItemAtPosition(位置);

       if(item instanceof String){
         //cast it
       }
    
  2. 只需检查您使用的适配器类型.. getItem 返回TYPE Adapter< TYPE >

于 2013-03-20T07:29:18.950 回答
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();

        }
    });
于 2013-03-20T07:31:48.063 回答