Доступ к ArrayAdapter в onCreate из другого класса - PullRequest
2 голосов
/ 31 марта 2011
public class controller extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Context currentContext = this;
    final BlinkAPI blinkAPI = new BlinkAPI(currentContext);


    lvRadio = (ListView)findViewById(R.id.ListViewRadio);
    }
    ...
   }
   //***********************************
   //Separate file

   public class BlinkAPI {

private static Context mContext;
static ListView radioLV;


public BlinkAPI( Context ctx)
{
    BlinkAPI.mContext = ctx;

    radioLV = (ListView )((Activity) mContext).findViewById(R.id.ListViewRadio); 

}

private static void updateRadioTitles( )    {
        radioTitleAdapter = (ArrayAdapter<String>) radioLV.getAdapter();
        ...//Get titleStr etc
        radioTitleAdapter.add(titleStr);        
        radioTitleAdapter.notifyDataSetChanged(); 
}

Этот код вылетает

Ответы [ 3 ]

1 голос
/ 31 марта 2011

Прежде всего: Раукодрауг и Флавио правы! Вы не можете позвонить:

myAdapter = radioLV.getAdapter();

, чтобы получить адаптер ListView.

Однако вы сказали, что вам нравится обновлять адаптер. Если вы хотите это сделать, ваша деятельность должна содержать этот адаптер как переменную, например:

private Adapter myAdapter;

Если вы хотите обновить адаптер, вы можете вызвать следующий метод (убедитесь, что вы делаете эти вызовы в UI-потоке, иначе список не будет обновлен):

myAdapter.add(newItem); // whatever item you might want to add
myAdapter.notifyDataSetChanged();
0 голосов
/ 31 марта 2011

Вы можете получить адаптер, вызвав radioLV.getAdapter ()

Но вы не можете изменить его (добавить \ удалить элементы).Чтобы изменить его - создайте и установите новый адаптер или напишите расширение ArrayAdapter и добавьте в него метод setObjects.

0 голосов
/ 31 марта 2011

Если у вас есть доступ к ListView, вы можете использовать radioLV.getAdapter()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...