2013-03-20 2 views
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) 

UPDATE:

я определил выше TextView в скрытом поле в XML-

<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 
+0

Попробуйте значение Integer = (Integer) view.getItemAtPosition (положение); –

+0

Вы также можете использовать String s = String.valueOf (view.getItemAtPosition (position)); – Neil

+0

http://stackoverflow.com/questions/8973381/why-cannot-cast-integer-to-string-in-java попробуйте это ... – vlio20

ответ

0

Наконец-то я получил значение скрытого поля для щелкнутого ite м.

Таким образом, это должно быть

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

, и я думаю, вы должны использовать андроид Log.i/Log.d/Log.e нибудь вместо System.out.println :)

никогда ничего
+0

есть синтаксическая ошибка в вашей первой строке. Он дает - 'Метод toString (int) в типе Integer не применим для аргументов (Object)' –

0
  1. не приводите без использования instancof

    войти

    Таким образом, ваш код в идеале должен быть

    Объект item = view.getItemAtPosition (position);

    if(item instanceof String){ 
        //cast it 
        } 
    
  2. Просто проверить Какой тип адаптера, который вы использовали .. GetItem возвращает TYPE переходника < ТИП>

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

     } 
    }); 
Смежные вопросы