ClassCastException на Java.lang.String в Android - PullRequest
0 голосов
/ 11 ноября 2011

Понятия не имею, почему я получаю это в этой строке кода (где стрелка)

protected void onListItemClick(ListView l, View v, int position, long id) {
--->    App selection = (App) l.getItemAtPosition(position);

Пользовательский ArrayAdapter:

public class MyCustomAdapter extends ArrayAdapter<String>{

private ArrayList<String> myarr = new ArrayList<String>();
private LayoutInflater inflater;

//objects = array of whatever you want to add to the list
public MyCustomAdapter(Context context,
        int textViewResourceId, List<String> objects) {
    super(context, textViewResourceId, objects);
    myarr = (ArrayList<String>) objects;
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
 public View getView(int position, View convertView, ViewGroup parent) {

      View row = convertView;
      if(row==null){
       row=inflater.inflate(R.layout.list_row, parent,false);
      }

      ((TextView)row.findViewById(R.id.rowtextview)).setText(myarr.get(position));

      return row;
     }

Это адаптер массива, который выполняет эту работу. Я предполагаю, что проблема здесь.

Ответы [ 2 ]

3 голосов
/ 11 ноября 2011

Вы, должно быть, сохранили String в своем ListView.Это дает исключение, потому что он не может привести String к App

РЕДАКТИРОВАТЬ
Объекты в вашем myarr отображаются в вашем ListView.Все эти объекты String с.В строке, где вы получаете исключение, вы пытаетесь преобразовать String в position в App.Он не может этого сделать, поэтому вы получите исключение.Попробуйте следующее:

String selection = (String) l.getItemAtPosition(position);

РЕДАКТИРОВАТЬ2
Измените myarr на

private ArrayList<App> myarr = new ArrayList<App>();

Измените следующую строку:

((TextView)row.findViewById(R.id.rowtextview)).setText(myarr.get(position).getText());

Добавить App класс:

public String getText(){/*...*/}
public void setText(String text){/*...*/}
public String toString(){ /*...*/}
0 голосов
/ 11 ноября 2011

если это пользовательское использование, как это

MyFont f = fontArray[pos];
selected_font = f.getValue();
...