public class MainActivity extends AppCompatActivity {
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance ();
DatabaseReference databaseReference = firebaseDatabase.getReference ();
ListView listView;
List<String> ListString = new ArrayList<String> ();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main22);
ListString.add ("Hello");
databaseReference.addValueEventListener (new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
DataSnapshot snapshot = dataSnapshot.child ("User");
for(DataSnapshot s: snapshot.getChildren ())
Toast.makeText (MainActivity.this, s.getKey ().toString (), Toast.LENGTH_SHORT).show ();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
listView = (ListView) findViewById (R.id.listview);
ListAdapter listAdapter = new ListAdapter (MainActivity.this, ListString);
listView.setAdapter (listAdapter);
DatabaseReference s = databaseReference.child ("User");
DatabaseReference p = s.child ("Name");
p.setValue (ListString.get (1));
} }
正如我所说,每当我调用此活动时,它会崩溃应用程序并且logcat是
java.lang.RuntimeException:无法启动活动 ComponentInfo {lifeline.learn.com.attendencemarker / lifeline.learn.com.attendencemarker.MainActivity}: java.lang.IndexOutOfBoundsException:索引:1,大小:1 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) 在android.app.ActivityThread.-wrap14(ActivityThread.java) 在 android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1642) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:154) 在android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1518) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) 引起:java.lang.IndexOutOfBoundsException:索引:1,大小:1
答案 0 :(得分:0)
此行导致错误
p.setValue (ListString.get (1));
ListString中只有一个值,您可以访问第二个值,将其更改为
p.setValue (ListString.get (0));
答案 1 :(得分:0)
就像错误说java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
你想要访问索引1或大小一的列表一样。记住计数从零开始,因此将p.setValue (ListString.get (1));
更改为
p.setValue (ListString.get (0));
答案 2 :(得分:0)
此行是崩溃的地方:
p.setValue (ListString.get (1));
此时,ListString只有一个元素。 List对象具有从零开始的索引。因此,当您尝试访问列表中第二元素的索引1
时,而不是第一个。所以,你真正需要的是:
p.setValue (ListString.get (0));