У меня есть ListFragment, который ArrayAdapter создан и подключен к ListView. Я могу установить первый элемент списка перед lv.setAdapter (адаптером), и он работает, но после этого я не могу обновить ListView вне этого класса с помощью метода addEntry. Что может быть проблемой здесь?Не удается обновить адаптер ListView в ListFragment
public class MyFragment extends ListFragment implements OnItemClickListener {
public static ArrayAdapter<String> adapter = null;
public static ListView lv = null;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
adapter = new ArrayAdapter<>(getActivity(), R.layout.listview, R.id.host, new ArrayList<>());
adapter.setNotifyOnChange(true);
adapter.add("Entry1");
lv = getListView();
lv.setOnItemClickListener(this);
lv.setAdapter(adapter);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_hostlist, container, false);
return view;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), "Item: " + position, Toast.LENGTH_SHORT).show();
}
public static void addEntry(String listEntry) {
Log.d("TAG", "New entry: " + listEntry);
adapter.add(listEntry);
adapter.notifyDataSetChanged();
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/icon"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_margin="5dp"
android:src="@drawable/image" />
<TextView
android:id="@+id/entry"
android:layout_margin="5dp"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_width="match_parent"
android:layout_height="64dp"
android:gravity="center_vertical|start"
android:paddingTop="5dp"/>
</LinearLayout>
Зачем использовать статические? –