У меня есть ListView, и я хочу, чтобы первые две записи в нем отображались иначе, чем остальные. Ничего необычного, я хочу, чтобы все они просто были текстовыми. Но первые две записи должны иметь разные размеры и весы, чем остальные. Я пробовал модифицировать класс ArrayAdapter следующим образом:
private class BusStopAdapter<T> extends ArrayAdapter<T>{
public BusStopAdapter(
Context context, int textViewResourceId,
List<T> objects)
{
super(context, textViewResourceId, objects);
}
public View getView(int position, View convertView,
ViewGroup parent)
{
TextView toReturn =
(TextView)super.getView(position, convertView, parent);
if(position == 0){
toReturn.setTextSize(12);
toReturn.setText("Previous Bus: " + toReturn.getText());
toReturn.setPadding(0,0,0,0);
}
else if(position == 1){
toReturn.setTextSize(20);
toReturn.setPadding(
toReturn.getPaddingLeft(),
0,
toReturn.getPaddingRight(),
0
);
toReturn.setText("Next Bus: " + toReturn.getText());
toReturn.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.TOP);
}
return toReturn;
}
}
Но это непреднамеренно приводит к тому, что некоторые другие текстовые эффекты используют эти специальные атрибуты. Я думаю, это потому, что textviews получают "переработку" в классе AbsListAdapter.
Попробуйте вот так:
if(position == 0){
toReturn.setTextSize(12);
toReturn.setText("Previous Bus: " + toReturn.getText());
toReturn.setPadding(0,0,0,0);
}
else if(position == 1){
toReturn.setTextSize(20);
toReturn.setPadding(
toReturn.getPaddingLeft(),
0,
toReturn.getPaddingRight(),
0
);
else
style it normally or whatever you want.........