Android - Как установить шрифт жирным шрифтом при нажатии на элемент списка - PullRequest
1 голос
/ 17 ноября 2011

Я пытаюсь установить строку, выделенную жирным шрифтом при нажатии на нее.Но это дает мне ClassCastException, когда я пытаюсь преобразовать представление в TextView, как показано ниже -

setListAdapter(adapter);
final ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
  int position, long id) {
            TextView tv = (TextView)view;
            tv.setTypeface(null, Typeface.BOLD);
        }
        });

Что я делаю не так?Как мне это сделать?

РЕДАКТИРОВАТЬ:

Мой адаптер выглядит как -

public class CountryListAdapter extends ArrayAdapter<String> {
private final Activity context;
private final ArrayList<String> names;

public CountryListAdapter(Activity context, ArrayList<String> names) {
    super(context, R.layout.rowlayout, names);
    this.context = context;
    this.names = names;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.rowlayout, null, true);
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    textView.setText(names.get(position));

    return rowView;
}
}

Ответы [ 2 ]

7 голосов
/ 17 ноября 2011

Код вашего адаптера показывает основную причину сбоя:

В соответствии с кодом вашего адаптера, view, который вы отлили, - это rowView, а не textView. Так что вы также должны получить к нему доступ таким образом. Вот почему вы получаете ClassCastException.

 public void onItemClick(AdapterView<?> parent, View view,
 int position, long id) {
        View rowView = view
        TextView tv = (TextView) rowView.findViewById(R.id.label);
        tv.setTypeface(null, Typeface.BOLD);
    }
    });
0 голосов
/ 17 ноября 2011

Вы уверены, что ваш элемент списка TextView?Обычно это более сложная структура (например, LinearLayout).И если это так, вам нужно выяснить TextView в этом макете, используя findById().

...