2015-12-20 4 views
2

У меня есть 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> 
+2

Зачем использовать статические? –

ответ

0

в виде пейджере вы можете попробовать эту сделку один

updateFragment = (UpdateFragment) adapter.instantiateItem(
          pager, possition); 
        if (updateFragment != null) 
         updateFragment.Update(); 

или фрагмента вы можете найти фрагмент по findview по тэгу и вызвать метод фрагментировать

public interface UpdateFragment { 

    void Update(); 

} 

осуществить это слушать в вашем фрагменте.

Смежные вопросы