2015-02-26 2 views
2

я могу написать простой адаптер массива из классовой структуры, но теперь я хочу написать простой адаптер массива из строки, в моем приложении у меня есть простой массив, как:Android простого ArrayAdapter из String []

private String[] panelNumbers; 
panelNumbers = G.getActiveUserInfo().phoneNumbers.split(","); 

для показа этот массив в ListView, элементы массива слился с RadioButton, мой XML макет:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ffffff" 
    android:orientation="vertical" > 

    <RadioButton 
     android:id="@+id/radio1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:checkMark="@android:drawable/btn_radio" 
     android:gravity="right|center_vertical" 
     android:text="xcgdf" 
     android:textColor="@color/black_text" /> 

    <TextView 
     android:id="@+id/text1" 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:background="@drawable/gradient_divider" 
     android:text="Medium Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

</LinearLayout> 

теперь я хочу, чтобы заполнить этот элементы массива с помощью адаптера пользовательского массива моего ArrayAdapter DonT правильно

Мой ArrayAdapter

public class AdapterSmsPanelNumbers extends ArrayAdapter<String[]> { 

    public AdapterSlideMenuSMS(String[] array) { 
     super(G.context, R.layout.call_list, array); 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      convertView = G.inflater.inflate(R.layout.single_choice, parent, false); 
      holder = new ViewHolder(convertView); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.text.setText(array[position]); 
     return convertView; 
    } 

    private static class ViewHolder { 
     private final TextView text; 
     private final RadioButton radio; 
     public ViewHolder(View view) { 
      text = (TextView) view.findViewById(R.id.text1); 
      radio = (RadioButton) view.findViewById(R.id.radio1); 
     } 
    } 
} 

ПРОБЛЕМА я не могу заполнить элементы ListView с помощью одной строки [], я не хочу, чтобы создать класс от panelNumbers, пожалуйста, помогите мне решить этот класс проблем, чтобы иметь простой ArrayAdapter показывая простой массив

+0

В чем проблема? –

+1

изменить 'ArrayAdapter ' и 'holder.text.setText (getItem (position));' – SorryForMyEnglish

+0

@Sergey Glotov Я не могу заполнить элементы списка списка из одного массива String [] –

ответ

2

Концепция Adapter должна быть понята первой. Ему нужен массив (или список) объектов, поэтому для каждого элемента, который он найдет внутри него, он будет генерировать View (при необходимости).

Здесь, если вы хотите играть с массивом String, вы должны сообщить в ArrayAdapter, что он будет обрабатывать String с, с:

public class AdapterSmsPanelNumbers extends ArrayAdapter<String> 

ArrayAdapter уже есть механика для обработки этих String сек вы дадите ему. Метод позволяет легко получить элемент в предоставленном массиве:

String stringAtPosition = getItem(position); 

Так, как это было предложено @SorryForMyEnglish:

public class AdapterSmsPanelNumbers extends ArrayAdapter<String> { 

    public AdapterSlideMenuSMS(Context context, String[] array) { 
     super(context, 0, array); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.single_choice, parent, false); 
      holder = new ViewHolder(convertView); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.text.setText(getItem(position)); 
     return convertView; 
    } 

    private static class ViewHolder { 
     private final TextView text; 
     private final RadioButton radio; 
     public ViewHolder(View view) { 
      text = (TextView) view.findViewById(R.id.text1); 
      radio = (RadioButton) view.findViewById(R.id.radio1); 
     } 
    } 
} 

Тогда в вашем Activity, вы можете использовать этот обычай ArrayAdapter:

private String[] panelNumbers; 
panelNumbers = G.getActiveUserInfo().phoneNumbers.split(","); 

ArrayAdapter adapter = new AdapterSmsPanelNumbers(this, panelNumbers); 
listView.setAdapter(adapter); 
Смежные вопросы