我有两个类,第一个类用于 GUI,我在其中声明了 ListView 和适配器以及 setter ,以便从第二个类中调用它们。
public class AndroidGUIModifier implements IMyComponentGUIModifier, IFragmentEvents {
private transient ListView lv;
List<String> mydeviceslist;
ArrayAdapter<String> adapter ;
public void setAdapter(ArrayAdapter<String> adapter) {
this.adapter = adapter;
adapter.notifyDataSetChanged();
}
public void setMydeviceslist(List<String> mydeviceslist) {
this.mydeviceslist = mydeviceslist;
}
@Override
public void onCreateView() {
lv=(ListView) fragment.findViewById("xdevices") ;
mydeviceslist = new ArrayList<String>();
adapter = new ArrayAdapter<String>(fragment.getContext(),android.R.layout.simple_list_item_1,mydeviceslist);
lv.setAdapter(adapter);
在我的第二堂课中,我将等待一个事件来接收我想要将其加载到 ListView 中的列表,然后我将调用列表 setter 来设置新接收的列表,并调用适配器 setter 来更新它,但是它不起作用,尽管我在日志中收到了设备列表,但没有显示任何内容。
public class triprincipal extends BCModel {
public List<String> mydevices ;
BCEvent bcEvent;
final ArrayAdapter<String> adapter =guiModifier.getAdapter();
while (isRunning()) {
bcEvent = waitForBCEvent();
if (bcEvent.getID() == checkevent) {
mydevices = bcCommandSenderPlugin.getDevicesNames(); // here I get a list of my devices
Log.i("devices", mydevices.toString());
guiModifier.getFragment().getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
guiModifier.setMydeviceslist(mydevices);
guiModifier.setAdapter(adapter);
}
} );
最佳答案
在setMydeviceslist()中这样做:
this.mydeviceslist.addAll(mydeviceslist);
adapter.notifyDataSetChanged();
希望对您有帮助。
关于java - 我无法刷新 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42692066/